Symfony安全组件在什么情况下调用loadUserByUsername()
?
刚刚登录吗?如果是这样,在loadUserByUsername()
中完成冗长/特定于登录的任务是否安全?
例如,将lastLogin日期与用户的个人资料相对应,或者从网络服务中刷新用户的个人资料。
我已经通过更新loadUserByUsername()
方法中的lastLogin日期进行了实验,并且似乎没有在每个页面加载时更新。我似乎无法在Symfony API文档或Symfony网站上的Book中找到这些信息。
(我使用Symfony 2.5,但如果您的答案在2.x系列中有所不同,请详细说明)
答案 0 :(得分:3)
我认为您希望实现的最佳解决方案是使用security.interactive_login
事件。它在成功登录后才被解雇。
事件处理程序定义:
last_login_listener:
class: Namespace\LastLoginListener
tags:
- { name: kernel.event_listener, event: security.interactive_login, method: logLastLogin }
监听器:
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
class LastLoginListener
{
public function logLastLogin(InteractiveLoginEvent $event)
{
// do what you have to do
}
}