2012-04-22 94 views
0

在我的網絡應用程序中,我使用基於表單的登錄。我有一個場景,除了登錄config.xml中設置的表的數據之外,還必須驗證其他數據庫中存在的用戶。j_security_check身份驗證是否可以跟隨其他Web身份驗證機制?

所以,我在想這個流程:

用戶試圖訪問受保護的資源 - >如果沒有有效的會話,會被重定向到登錄窗體 - >用戶輸入他的憑據 - > j_security_check認證爲每個登錄-config.xml - >如果驗證成功,那麼好,否則重定向到一個jsp錯誤頁面,在那裏我檢查用戶是否存在於另一個數據庫(活動目錄是特定的。我已經有代碼來驗證憑證),並創建一個成功的會話 - >否則重定向到錯誤頁面

上面以粗體突出顯示的部分是否可用?

我已經閱讀過一些文章,一旦認證授予j_security_check,就沒有辦法過度規則它。這是真的嗎?

是否有任何其他可能的解決方案(除了從其他數據庫添加到login-config.xml中指定的表或修改login-config.xml)?

(我正在使用Jboss)

謝謝。

回答

0

創建Servlet過濾器,用於在j_security_check之後捕獲用戶重定向到的URL。在此過濾器中檢查其他數據庫中的用戶憑據。

如果檢查成功,則添加會反映該事實的會話布爾值。如果檢查失敗,則刪除會話(HttpSession.invalidate()方法)並將用戶重定向到錯誤頁面。

可能過濾器會捕獲所有需要授權的URL。在你過濾器檢查是否有布爾標誌,所以你不要一次又一次地做數據庫檢查。

+0

感謝您的回覆@Piotr Kochanski。 我已經嘗試了一個替代可能不是最好的解決方案。 我們做了以下事情: j_security_check試圖驗證用戶對我的本地數據庫。 因爲用戶不存在,所以進入錯誤頁面。在這裏,我用servlet替換了錯誤頁面,在另一個DB中檢查用戶,如果他是有效用戶,我在本地數據庫中創建一個條目然後再將這些憑據轉發到j_security_check。現在該條目存在,用戶被允許訪問。 – Sudhakar 2012-05-16 15:56:30