5 votes

Comment puis-je écouter les événements de réauthentification "remember me" dans Symfony2 ?

En utilisant une authentification "normale" - et non pas "se souvenir de moi" - je peux définir des gestionnaires de succès et d'échec, en ajoutant ceci à la section security.yml fichier :

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

Mais je n'ai pas trouvé de moyen d'écouter la réauthentification "remember me", lorsque la session d'un utilisateur a expiré et qu'un cookie "remember me" est utilisé pour se réauthentifier. Avez-vous une idée de la façon dont je peux réaliser cela ?

4voto

nezuvian Points 127

Créez un écouteur pour le security.interactive_login événement. Cet événement est déclenché à la fois sur les connexions simples et sur les connexions avec "se souvenir de moi" (cf. Symfony\Component\Security\Http\Firewall\RememberMeListener.php @ligne:77).

Dans l'écouteur, vous pouvez séparer les deux en vérifiant le cookie. Vous pouvez trouver plus d'informations sur l'écouteur aquí .

0voto

Jovan Perovic Points 6978

Je n'ai pas essayé, mais vous pourriez peut-être attacher un auditeur à success_handler mais assurez-vous d'injecter SecurityContext service via <argument> dans la configuration du service.

Ensuite, dès que vous entrez dans votre méthode de service, vous le faites :

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

Encore une fois, ce n'est qu'une idée, mais il semble que cela pourrait faire...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X