Новое в Symfony 4.4: Ленивые Firewalls

В компоненте Symfony Security брандмауэры настраивают, как ваши пользователи смогут проходить аутентификацию (например, используя форму входа в систему, токен API и т. д.). Брандмауэры также настраивают, какие URL адреса они охватывают, и разрешено ли анонимным пользователям просматривать эти URL адреса или нет:

# config/packages/security.yaml
security:
    # ...
    firewalls:
        main:
            pattern: ^/
            anonymous: ~
            # ...

Когда настроен брандмауэр с отслеживанием состояния, токен пользователя всегда создается из сеанса для каждого запроса, независимо от того, используется ли пользователь в действительности или нет приложением. Это означает, что все эти ответы не кэшируются (потому что они используют сеанс).

В Symfony 4.4 брандмауэры могут определять ленивый как значение своего параметра анонимной конфигурации:

# config/packages/security.yaml
security:
    # ...
    firewalls:
        main:
            pattern: ^/
            anonymous: lazy
            # ...

Это говорит Symfony загружать пользователя (и запускать сеанс) только в том случае, если приложение действительно обращается к объекту пользователя (например, с помощью вызова is_granted() в шаблоне или вызова isGranted() в контроллере или сервисе). Это означает, что все те URL адреса или действия, которые не нужны пользователю, теперь будут общедоступными и кешируемыми, что повышает производительность вашего приложения.