Nuevo en Symfony 4.4: Firewalls diferidos
En el componente Security de Symfony, los firewalls configuran la forma en la que los usuarios se autentican (por ejemplo, mediante un formulario de login, un token de una API, etc.) Los firewalls también definen en qué URLs se aplica cada firewall y también si los usuarios anónimos pueden acceder o no a esas URLs:
# config/packages/security.yaml security: # ... firewalls: main: pattern: ^/ anonymous: ~ # ...
Cuando se configura un firewall de tipo stateful, en cada petición se crea un token en la sesión para representar al usuario. Esto se hace incluso aunque esa determinada petición no utilice el usuario para nada. El problema es que debido al uso de la sesión, todas esas peticiones no son cacheables.
Para solucionar este problema, en Symfony 4.4, puedes definir lazy
como valor
de la opción anonymous
de los firewalls:
# config/packages/security.yaml security: # ... firewalls: main: pattern: ^/ anonymous: lazy # ...
El valor lazy
le dice a Symfony que solo cargue el usuario (y por tanto, que
solo cree la sesión) si la aplicación utiliza realmente el objeto del usuario
(por ejemplo mediante una llamada a is_granted()
en la plantilla o
isGranted()
en un controlador o servicio). De esta forma, todas esas URLs que
no usan el usuario serán públicas y puedes cachearlas, mejorando el rendimiento
de la aplicación.
Esta funcionalidad fue contribuida por Nicolas Grekas en el pull request #33676.
Fuente: New in Symfony 4.4: Lazy Firewalls
Comentarios
Proyectos Symfony destacados
La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.