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

Fuz*_*zel 2 php authentication symfony

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

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

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

--> 是否正确,在 中的checkPreAuth()函数中添加这样的函数Symfony\Component\Security\Core\User\UserChecker?我正在考虑使用类似的功能来挂钩checkCustomConditions()

ale*_*dra 5

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

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