使用" 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
}
再说一次,这只是一个想法,但听起来它可以做…