我使用彈簧安全和我實現的UserDetailsService這完全處理我的用戶登錄過程。如何檢查每個請求用戶身份在春季安全
問題是這樣的: 有從數據庫中檢查每個請求的用戶狀態的標準方法,例如,如果用戶的帳戶狀態更改爲「鎖定」或同時他還在簽約,在他的角色得到改變,該申請阻止他繼續他的工作。
這裏的問題是,我的自定義UserDetailsService類中的「public UserDetails loadUserByUsername(String arg0)」僅在登錄過程中被調用,並且userDetails對象會保留數據,因爲登錄過程已執行並且userDetails信息不新鮮。
我可以通過一些變通喜歡把自己從數據庫中的用戶對象解決這一點,並通過一個傾聽者檢查其狀態。但我覺得春季安全可能會爲這種情況提供一個通用的解決方案。
請幫忙。謝謝。
你可以寫一個過濾器,所有的請求(除了登錄請求)映射,並檢查用戶是否鎖定與否。 – 2014-11-03 23:55:44
感謝您的解決方案。實際上它也出現在我的腦海裏,但是我認爲可能在春季安全中設置了一個標誌或屬性,我可以強制應用程序根據需要加載用戶詳細信息。 – Saro 2014-11-03 23:57:29
我不認爲你可以只用一個標誌管理它,你需要一個過濾器添加到'過濾chain'。如果您可以探索如何處理「記住我」過濾器,您可能會有所瞭解。 – 2014-11-04 00:09:58