我试图找出准确挂钩到FOSUserBundle登录过程的位置以检查用户是否有“已删除”标志,如果是真,则终止登录尝试返回错误。
答案 0 :(得分:4)
嗯,身份验证由安全组件处理,而不是由FOS用户包处理。 有关详细信息,请先阅读此doc
此处简短摘要
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
当用户向受防火墙保护的URL发出请求时, 安全系统已激活。防火墙的工作是 确定用户是否需要进行身份验证,以及是否需要进行身份验证 将响应发送回启动身份验证过程的用户。
SRC:http://symfony.com/doc/master/book/security.html#how-security-works-authentication-and-authorization
providers:
fos_userbundle:
id: fos_user.user_provider.username
防火墙需要提供商(提供商用户名和密码)。 FOS用户包具有自己的用户提供程序。
您的问题
您可以扩展fos用户包的用户管理器并覆盖逻辑以检查更多条件。
您可以在此处查看示例 https://stackoverflow.com/a/14985093/598424
现在如何检查删除标记 strong>
AdvancedUserInterface
界面添加了四种额外方法来验证帐户状态:
isAccountNonExpired()
检查用户的帐户是否已过期,isAccountNonLocked()
检查用户是否已被锁定,isCredentialsNonExpired()
检查用户的凭据(密码)是否已过期,isEnabled()
检查用户是否已启用。