How can I listen for “remember me” reauthentication events in Symfony2?

早过忘川 提交于 2019-12-07 05:32:20

问题


Using “normal” — not “remember me” authentication — I can set a success and failure handlers, adding this to the security.yml file:

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

But I couldn't find a way for listening for “remember me” reauthentication, when a user's session is expired and a “remember me” cookie is used to reauthenticate again. Any ideas on how can I achieve this?


回答1:


Create a Listener for the security.interactive_login event. That gets triggered on both simple and "remember me" logins (see Symfony\Component\Security\Http\Firewall\RememberMeListener.php @line:77).

In the listener you can separate the two by checking the cookie. You can find more about the listener here.




回答2:


I haven't tried this but maybe you could attach listener to success_handler but make sure you inject SecurityContext service via <argument> in service config.

Then, is soon as you enter you service method you do:

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

Again, this is just an idea but sounds like it could do...



来源:https://stackoverflow.com/questions/7995366/how-can-i-listen-for-remember-me-reauthentication-events-in-symfony2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!