2014-09-25 36 views
0

我有一個彈簧web應用程序,它顯示一個登錄對話框作爲其第一頁。在登錄頁面中唯一提供的輸入是用戶名和密碼。我希望用戶能夠輸入他/她的用戶名和密碼,然後單擊一個按鈕,該按鈕將檢查用戶是否在ldap目錄中可用。然後,我希望另一個輸入(下拉列表)出現在同一頁面中,以便用戶選擇要進入的頁面。 問題是,據我所知,一旦彈簧安全認證用戶,頁面必須重新加載所以會話cookie存儲在用戶的瀏覽器中,並在重新加載時檢查它與應用程序存儲中的cookie所以用戶被稱爲登錄。如何使用spring安全性實現兩步登錄?

重新加載是我的問題。我希望檢查用戶憑據,如果他有足夠的許可證,那麼我想返回一份他可以選擇登陸的頁面列表。

夥計們請不要問我在這裏張貼一些代碼。如果你知道我在說什麼,那麼你不需要代碼。告訴我該怎麼做。

+0

目標頁面的選擇對於每個用戶而言是不同的,還是在應用程序中是相同的?如果前者是真的需要?目標網頁是否真的非常敏感以至於必須通過登錄進行保護?例如,銀行和經紀商網站具有類似的功能,但它們允許用戶選擇目標頁面以及用戶名和密碼。所選頁面上顯示的內容對於每個用戶當然不同,因此不存在任何機密性損失。另一種選擇是在成功登錄後從用戶可以選擇目標頁面的位置打開儀表盤頁面。 – manish 2014-09-25 09:18:52

+0

我說過這些頁面,所以問題會更簡單一些。用戶實際上是幾個**項目**的成員。當我知道用戶有效且可以登錄時,我想向他展示他可以看到的可用**項目列表**,他只能在同一時間看到一個項目。 – hamid 2014-09-25 10:27:44

+0

在我們的一個應用程序中,我們做了完全相同的事情,我們有兩個起始頁面。如果用戶未分配給任何項目,用戶配置文件頁面就是登錄後的起始頁面。項目儀表板頁面是分配給一個或多個項目的起始頁面。我們允許用戶選擇一個項目作爲他們的默認項目,如果需要,他們可以從下拉列表中更改爲不同的項目。到目前爲止,我們還沒有收到任何用戶對此方案的任何負面反饋。如果用戶只分配給一個項目,那麼這是默認的任何方式。 – manish 2014-09-26 05:56:45

回答

0

使用AJAX驗證用戶,如果用戶通過驗證,服務器返回適當的HTTP狀態,並且可能是您需要在下拉菜單中顯示的頁面列表,這實際上是您的選擇,您希望如何獲取頁面列表這需要向用戶顯示。根據服務器返回的HTTP狀態代碼,您可以決定是否向用戶顯示頁面列表,這樣您的頁面就不會重新加載。

+0

你的回答是有效的,但是沒有重新加載頁面,你沒有包含會話ID的會話cookie。沒有這些,用戶就無法訪問應用程序的其他頁面。 – hamid 2014-09-25 06:42:53

+0

如何在Spring安全篩選器鏈中添加自定義篩選器,您可以在其中手動處理此類經過身份驗證的用戶,並允許他們查看請求的頁面,然後在安全上下文中設置身份驗證,並且可以繞過此篩選器組。有點骯髒,但應該工作。 – varun 2014-09-25 06:48:52

相關問題