Symfony2 - 拦截登录以检查用户是否已启用

use*_*554 2 symfony

我已经实现了自己的激活机制,用户首先必须在登录系统之前确认电子邮件.但是,拦截登录以检查用户是否已被激活的最佳做法是什么?

我想简单地检查一下,例如:

if (!$user->isEnabled())
    //TODO refuse login
Run Code Online (Sandbox Code Playgroud)

我是否添加了onSecurityInteractiveLogin侦听器?或者我必须自己实现整个登录机制?

use*_*554 5

我通过使用以下界面找到了解决此问题的方法:

Symfony\Component\Security\Core\User\AdvancedUserInterface
Run Code Online (Sandbox Code Playgroud)

并实施了该isEnabled()方法.

如果我现在尝试使用非活动用户登录,则会抛出一个Symfony\Component\Security\Core\Exception\DisabledException.