В компоненте Symfony Security брандмауэры определяют, как ваши пользователи смогут проходить аутентификацию (например, используя форму входа в систему, API токен и т. д.). Брандмауэры также определяют, какие URL-адреса они охватывают, и разрешено ли анонимным пользователям просматривать эти URL-адреса или нет:
# config/packages/security.yaml
security:
# ...
firewalls:
main:
pattern: ^/
anonymous: ~
# ...
Когда настроен межсетевой экран с отслеживанием состояния, токен пользователя всегда создается из сеанса для каждого запроса, независимо от того, используется ли пользователь в действительности приложением или нет. Это означает, что все эти ответы не кэшируются (потому что они используют сеанс).
В Symfony 4.4 брандмауэры могут определять lazy
как значение своего параметра конфигурации anonymous
:
# config/packages/security.yaml
security:
# ...
firewalls:
main:
pattern: ^/
anonymous: lazy
# ...
Это говорит Symfony загружать пользователя (и запускать сеанс) только в том случае, если приложение действительно обращается к объекту пользователя (например, с помощью вызова is_granted()
в шаблоне или вызова isGranted()
в контроллере или сервисе). Это означает, что все те URL-адреса / действия, которые не нужны пользователю, теперь будут общедоступными и кешируемыми, что повышает производительность вашего приложения.
Оригинал статьи: https://symfony.com/blog/new-in-symfony-4-4-lazy-firewalls