Nuevo en Symfony 5.1: Personalizando la desconexión de los usuarios
Hace unos meses comenzamos a trabajar en una actualización masiva del componente de seguridad de Symfony y de su integración con el resto del framework. Todavía estamos trabajando en los cambios más importantes, pero ya tenemos listas algunas mejoras.
El LogoutListener
actual se puede utilizar para ejecutar cierta lógica de
negocio después de que los usuarios se desconecten de la aplicación (por ejemplo
para invalidar algunos tokens de seguridad). Aunque ese listener se puede
personalizar un poco, es bastante complicado hacerlo o incluso imposible en
algunos casos (por ejemplo, para personalizar la desconexión de usuarios desde
un bundle).
En Symfony 5.1 hemos mejorado esta funcionalidad con la introducción de un
evento llamado LogoutEvent
que reemplaza a los existentes LogoutSuccessHandlerInterface
y LogoutHandlerInterface
.
El nuevo evento se notifica tanto en el gestor de eventos global como en el de
cada firewall (cuyo nombre sigue el patrón security.event_dispatcher.NOMBRE_DEL_FIREWALL
).
Así por ejemplo, si quieres registrar un listener para el evento logout
solamente para el firewall main
, utiliza la siguiente configuración:
# config/services.yaml services: # ... App\EventListener\MyCutomLogoutListener: tags: - name: 'kernel.event_listener' event: 'Symfony\Component\Security\Http\Event\LogoutEvent' dispatcher: security.event_dispatcher.main
El objeto Symfony\\Component\\Security\\Http\\Event\\LogoutEvent
recibido por
el listener contiene métodos útiles como getToken()
(para obtener el token
de seguridad desde la sesión), getRequest()
y setResponse()
.
Esta funcionalidad fue contribuida por Wouter De Jong en el pull request #36243.
Fuente: New in Symfony 5.1: Simpler logout customization
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.