1

我试图弄清楚究竟在哪里挂钩到 FOSUserBundle 登录进程以检查用户是否具有“已​​删除”标志,如果为真,则终止登录尝试返回错误。

4

1 回答 1

4

好吧,身份验证由安全组件处理,而不是由 FOS 用户包处理。有关更多信息,请先阅读此文档

简短的总结在这里

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

现在如何检查删除标志

AdvancedUserInterface接口添加了四个额外的方法来验证帐户状态:

  • isAccountNonExpired()检查用户的帐户是否已过期,
  • isAccountNonLocked()检查用户是否被锁定,
  • isCredentialsNonExpired()检查用户的凭据(密码)是否已过期,
  • isEnabled()检查用户是否启用。

如何创建我们自己的自定义提供程序?

于 2013-03-22T08:38:53.703 回答