我怎样才能在Symfony2中收听"记住我"的重新认证事件?

Eln*_*mov 5 authentication event-handling remember-me symfony

使用"正常" - 而非"记住我"身份验证 - 我可以设置成功和失败处理程序,将其添加到security.yml文件中:

form_login:
    # ...
    success_handler: authentication_handler
    failure_handler: authentication_handler
Run Code Online (Sandbox Code Playgroud)

但是,当用户的会话过期并且使用"记住我"cookie再次进行重新认证时,我无法找到一种方法来监听"记住我"的重新认证.有关如何实现这一目标的任何想法?

nez*_*ian 5

为该security.interactive_login事件创建一个侦听器。这会在简单登录和“记住我”登录时触发(请参阅Symfony\Component\Security\Http\Firewall\RememberMeListener.php@line:77)。

在侦听器中,您可以通过检查 cookie 将两者分开。您可以在此处找到有关侦听器的更多信息。


Jov*_*vic 0

我还没有尝试过这个,但也许您可以附加侦听器success_handler,但请确保通过服务配置注入SecurityContext服务。<argument>

然后,一旦您输入服务方法,您就会执行以下操作:

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

再说一遍,这只是一个想法,但听起来好像可以......