2011-11-03 12 views
5

El uso de “normal” - no “Remember Me” Autenticación - Puedo fijar un éxito y fracaso manipuladores, añadiendo esto al archivo security.yml:¿Cómo puedo escuchar los eventos de reauthentication "remember me" en Symfony2?

form_login: 
    # ... 
    success_handler: authentication_handler 
    failure_handler: authentication_handler 

pero no pude encontrar un camino para la escucha de “recordar me "reauthentication", cuando la sesión de un usuario ha expirado y una cookie "recordarme" se usa para volver a autenticarse. ¿Alguna idea sobre cómo puedo lograr esto?

Respuesta

0

No he intentado esto pero tal vez podría adjuntar oyente a success_handler pero asegúrese de inyectar el servicio SecurityContext a través de <argument> en la configuración del servicio.

Entonces, es pronto como entras método de servicio que hace:

if ($this->securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')){ 
    // I am remembered visitor 
}else{ 
    // I am the new visitor 
} 

Una vez más, esto es sólo una idea, pero suena como que podría hacer ...

+0

El problema es que el 'success_handler' adjunto a' form_login' no se está llamando cuando un usuario está siendo relogueado por una cookie "recordarme". –

2

Crear un detector para el interactive_login evento. Esto se activa en inicios de sesión simples y "recuérdame" (ver Symfony\Component\Security\Http\Firewall\RememberMeListener.php @line: 77).

En el oyente puede separar los dos al marcar la cookie. Puede encontrar más información sobre el oyente here.

+0

Gracias por su respuesta. No necesito esta característica ahora, pero cuando la necesite nuevamente, probaré su solución para ver si funciona. –

+0

Debo señalar que esto, aunque funciona, no le da acceso al objeto Response. – Putr

Cuestiones relacionadas