我试图弄清楚究竟在哪里挂钩到 FOSUserBundle 登录进程以检查用户是否具有“已删除”标志,如果为真,则终止登录尝试返回错误。
问问题
2322 次
1 回答
4
好吧,身份验证由安全组件处理,而不是由 FOS 用户包处理。有关更多信息,请先阅读此文档
简短的总结在这里
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
当用户向受防火墙保护的 URL 发出请求时,安全系统将被激活。防火墙的工作是确定用户是否需要进行身份验证,如果需要,则将响应发送回启动身份验证过程的用户。
providers:
fos_userbundle:
id: fos_user.user_provider.username
防火墙需要提供者(提供者用户名和密码)。FOS 用户包有自己的用户提供者。
您的问题
您可以扩展 fos 用户包的用户管理器并覆盖逻辑以检查更多条件。
您可以在此处查看示例 https://stackoverflow.com/a/14985093/598424
现在如何检查删除标志
该
AdvancedUserInterface
接口添加了四个额外的方法来验证帐户状态:
isAccountNonExpired()
检查用户的帐户是否已过期,isAccountNonLocked()
检查用户是否被锁定,isCredentialsNonExpired()
检查用户的凭据(密码)是否已过期,isEnabled()
检查用户是否启用。
于 2013-03-22T08:38:53.703 回答