2013-03-21 76 views

回答

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?

+0

感谢你为这个提示! 我扩展了usermanager类并编辑了findUserBy方法,它检查它是否被删除,然后清空它使用的$ criteria数组,然后释放它。 然后它返回到标准错误(用户不存在)的登录屏幕。作品。 – Phil 2013-03-22 14:15:06