在这种情况下,成功登录后,我需要将用户的登录时间更新到基础表中。
用户实体目前正在实施UserInterface
并且表现良好。只想添加一些额外的代码来记录用户的登录日期时间。
搜索该网站,在我看来使用EventListener等有点沉重。其他较轻的替代品?
答案 0 :(得分:2)
您可以实施成功案件。
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: /
检查this以获取完整示例,并查看所有symfony2安全配置选项的reference doc(您也可以配置failure_handler)。
在我的工作解决方案中,我在我的监听器中实现了 onSecurityInteractiveLogin 方法:
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();
}
希望这个帮助