symfony何时调用loadUserByUsername()?

时间:2014-08-25 10:36:34

标签: php symfony

Symfony安全组件在什么情况下调用loadUserByUsername()

刚刚登录吗?如果是这样,在loadUserByUsername()中完成冗长/特定于登录的任务是否安全?

例如,将lastLogin日期与用户的个人资料相对应,或者从网络服务中刷新用户的个人资料。

我已经通过更新loadUserByUsername()方法中的lastLogin日期进行了实验,并且似乎没有在每个页面加载时更新。我似乎无法在Symfony API文档或Symfony网站上的Book中找到这些信息。

(我使用Symfony 2.5,但如果您的答案在2.x系列中有所不同,请详细说明)

1 个答案:

答案 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
    }
}