FOSUserBundle:尝试在登录前检查“已删除”标志

时间:2013-03-21 17:25:57

标签: symfony fosuserbundle

我试图找出准确挂钩到FOSUserBundle登录过程的位置以检查用户是否有“已删除”标志,如果是真,则终止登录尝试返回错误。

1 个答案:

答案 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

现在如何检查删除标记

  

AdvancedUserInterface界面添加了四种额外方法来验证帐户状态:

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

How to create our own custom provider?