How can I listen for “remember me” reauthenticatio

2019-04-29 15:00发布

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?

2条回答
别忘想泡老子
2楼-- · 2019-04-29 15:28

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...

查看更多
孤傲高冷的网名
3楼-- · 2019-04-29 15:34

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.

查看更多
登录 后发表回答