如何在Symfony2中侦听“记住我”重新身份验证事件?



使用" normal " -而不是" remember me "身份验证-我可以设置成功和失败处理程序,并将其添加到security.yml文件中:

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

但是我找不到一种方法来监听"记住我"重新认证,当一个用户的会话过期,一个"记住我"cookie被用来重新认证。我该如何做到这一点,有什么想法吗?

security.interactive_login事件创建侦听器。这在简单和"记住我"登录时都会触发(参见SymfonyComponentSecurityHttpFirewallRememberMeListener.php @line:77)。

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

我还没有尝试过,但也许你可以将监听器附加到success_handler,但请确保您通过<argument>在服务配置中注入SecurityContext服务。

那么,当您输入您的服务方法时,您就做:

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

再说一次,这只是一个想法,但听起来它可以做…

相关内容

  • 没有找到相关文章

最新更新