Php Symfony 2登录后做一些额外的工作
在本例中,在成功登录之后,我需要将用户的登录时间更新到基础表中 用户实体当前实现了Php Symfony 2登录后做一些额外的工作,php,symfony,login,Php,Symfony,Login,在本例中,在成功登录之后,我需要将用户的登录时间更新到基础表中 用户实体当前实现了UserInterface,并且运行良好。只想添加一些额外的代码来记录用户的登录日期和时间 在我看来,搜索该网站似乎使用了EventListener等工具,这有点沉重。其他更轻的替代方案?您可以实施一个Success Hander 编写一个实现AuthenticationSuccessHandlerInterface的类: 将其定义为服务(您可以注入其他服务,如doctrine 或安全上下文(在您的情况下为会话)
UserInterface
,并且运行良好。只想添加一些额外的代码来记录用户的登录日期和时间
在我看来,搜索该网站似乎使用了EventListener等工具,这有点沉重。其他更轻的替代方案?您可以实施一个Success Hander
AuthenticationSuccessHandlerInterface
的类:firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
secured_area:
pattern: ^/
anonymous: ~
form_login:
login_path: login
check_path: login_check
success_handler: some.service.id
logout:
path: logout
target: /
检查完整的示例和所有symfony2安全配置选项(您也可以配置故障处理程序)
在我的工作解决方案中,我在侦听器中实现了securityInteractivelogin方法,如下所示:
public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
{
$user = $event->getAuthenticationToken()->getUser();
$user->setLastLogin(new \Datetime());
// Entity manager injected by container in the service definition
$this->em->persist($user);
$this->em->flush();
}
希望此帮助不要使用事件侦听器。这是最好的方法。这应该是处理登录成功/失败的方法。嗨,TaylorR。如果这个或任何答案都解决了你的问题,请点击检查标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。