Php Symfony:连接到登录过程以检查附加条件

Php Symfony:连接到登录过程以检查附加条件,php,symfony,authentication,Php,Symfony,Authentication,我在我的项目中实现了Symfony的高级用户界面。它用于注册和登录用户 现在,当用户登录时,我想检查其他条件。例如,如果用户已确认其电子邮件和/或其他条件。这些条件是用户实体的数据库/属性中的字段,因此很容易检查它们 想象一下,我想向用户类添加一个isemailcomfixed()函数,该函数的调用类似于高级用户界面中的isEnabled()函数。如果返回true,则用户可以登录。如果返回false,我想限制访问并显示一条解决问题的消息 -->将此函数添加到Symfony\Component\S

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

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

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


-->将此函数添加到
Symfony\Component\Security\Core\User\UserChecker
中的
checkPreAuth()函数中是否正确?我正在考虑在这里使用一个类似于
checkCustomConditions()

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


我想添加您自己的预授权逻辑的最简单的方法是尝试覆盖提供者的定义(如果您使用的是默认定义)以使用您自己的UserChecker

这帮了大忙:在直接搜索方法时,我在上找到了一篇文章,介绍了如何覆盖服务用户检查程序以及如何实现我自己的: