2013-03-21 66 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