В компоненте 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 адреса или действия, которые не нужны пользователю, теперь будут общедоступными и кешируемыми, что повышает производительность вашего приложения.