我正在研究Symfon2,並且我已閱讀文檔,我偶然發現屬於「安全」部分的問題。 我需要一個由我製作的自定義身份驗證提供程序,該提供程序可以在會話中保留該令牌,以便在後續請求中獲取它,並且如果用戶沒有提供正確的憑據,則會將其重定向到登錄表單,如果他提供了一個正確的證書,他將被重定向到另一個頁面。使用AbstractAuthenticationListener實現自定義身份驗證提供程序
1. [訪問歡迎頁面(保護頁)]
用戶----------------------- --------------------------------> [用戶重定向到登錄表單頁面] ----> [用戶提供錯誤的憑據] -----> [用戶返回到登錄表單頁面]
2. [訪問歡迎頁面(受保護頁面)]
用戶------------------------------------- -------------------> [用戶重定向到登錄表單頁面] ----> [用戶提供正確的憑據] -------> [用戶訪問到歡迎頁面]
我想讓自定義身份驗證提供程序做一些事情(使用ldap,db ...等驗證用戶),然後提供一個令牌並將其保存到安全上下文中,並且要記住我的登錄表單重定向工作正常(如果用戶憑據錯誤,那麼用戶將被重定向到登錄表單頁面,如果他們是正確的,那麼他將重定向到一個歡迎頁面)。
在食譜中有一篇關於「How to create a custom Authentication Provider」的文章,它正在討論「如何爲WSSE身份驗證創建自定義身份驗證提供程序」。
製品的說明被寫入後來: 一類以上未使用的,AbstractAuthenticationListener類,是一個非常有用的基類,它爲安全擴展提供了通常所需的功能。這包括在會話中維護令牌,提供成功/失敗處理程序,登錄表單URL等等。由於WSSE不需要維護認證會話或登錄表單,因此它不會用於此示例。
在食譜中提到的示例中,使用了ListenerInterface,但它不能用於登錄表單頁面。
如果有人解決這個問題,我將非常感謝您獲得解決方案。如果您想驗證從不是db其他來源的用戶
最好的問候,
達尼
感謝m2mdas您的回覆,但我需要我的特殊標記添加到安全上下文憑據是否正確,證書並不一定是用戶名/密碼,也許這是一個特殊的號碼,或服務器,用戶,通行證的組合等。 –
查看我編輯的評論。 –
只需提一下,爲什麼我不能僅使用用戶提供程序,因爲我必須實現具有loadUserByUsername($ username)的「UserProviderInterface」,但這會給我唯一的用戶名,並且如果在我的情況下用戶需要提供ldap憑據用戶名/密碼,假設我不驗證用戶/數據庫傳遞,然後使用http://symfony.com/doc/current/cookbook/security/custom_provider.html中的解決方案,因爲我需要用戶/密碼所以我可以使用php的ldap函數來驗證用戶是否存在,如果他/她存在,那麼我可以返回一個有效的令牌。 –