在这种情况下,成功登录后,我需要将用户的登录时间更新到基础表中。登录后的Symfony 2做了一些额外的工作
用户实体当前实施UserInterface
,并且表现良好。只是想添加一些额外的代码来记录用户的登录日期时间。
搜索该网站,似乎我使用EventListener等是有点沉重。其他更轻的选择?
在这种情况下,成功登录后,我需要将用户的登录时间更新到基础表中。登录后的Symfony 2做了一些额外的工作
用户实体当前实施UserInterface
,并且表现良好。只是想添加一些额外的代码来记录用户的登录日期时间。
搜索该网站,似乎我使用EventListener等是有点沉重。其他更轻的选择?
您可以实施成功手杖。
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作为一个完整的例子和reference doc为所有symfony2安全配置选项(您也可以配置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();
}
希望这有助于
这应该是处理登录成功/失败的方式。 – 2015-02-09 07:13:39
Hi @TaylorR如果这个或任何答案已经解决了您的问题,请点击复选标记考虑[接受它](http://meta.stackexchange.com/q/5234/179419)。这向更广泛的社区表明,您已经找到了解决方案,并为答复者和您自己提供了一些声誉。没有义务这样做。 – Matteo 2015-03-17 09:12:47
没有用事件侦听器。这是最好的方法。 – Aitch 2015-02-08 23:38:04
重复http://stackoverflow.com/questions/11180351/symfony2-after-successful-login-event-perform-set-of-actions – Aitch 2015-02-08 23:39:00