Symfony:挂入登录过程以检查其他条件


Symfony: Hooking into login process to check for additional conditions

我在项目中实现了Symfony的高级用户界面。它用于注册和登录用户。

现在我有其他条件,我想在用户登录时检查。比如,如果用户已经确认了他的或她的电子邮件和/或其他条件。这些条件是用户实体的数据库/属性中的字段,因此很容易进行检查。

想象一下,我想向用户类添加一个isEmailConfirmed()函数,该函数与高级用户界面中的isEnabled()函数一样被调用。如果返回true,则用户可以登录。如果返回false,我想限制访问并显示一条解决问题的消息。

-->在Symfony'Component'Security'Core'User'UserChecker中的checkPreAuth()函数中添加这样的函数是否正确?我想用checkCustomConditions()这样的函数来连接这里?

在身份验证过程中,当尝试对用户进行身份验证时,提供者首先获取凭据并从存储(db,active directory)中检索用户。然后在为用户实际创建令牌之前调用Symfony'Component'Security'Core'User'UserChecker::preAuth()方法。在这里,针对您上面提到的每种情况都会抛出异常。您可以在登录操作中捕捉它们并对其进行解释。

我想添加您自己的preAuth逻辑的侵入性最小的方法是尝试覆盖提供者的定义(如果您使用默认的提供者)以使用您自己的UserChecker。