2012-05-27 71 views
0

我正在開發Spring-MVC應用程序,並且必須處理一個用例,在這個用例中,我必須將用戶重定向到與他/她從成功登錄到我的應用程序後所在的位置相同的位置。用戶request.getHeader(「Referer」);

我碰到使用HTTP Referer頭像

final String refer = request.getHeader("Referer"); 

,但做了一些[R & d後,我遇到了不同的線程說Referer是不可靠的,並且與防火牆和很好的瀏覽器可以阻止它,可以使我的應用程序工作不正常。

有沒有其他辦法可以達到這個目的?或者在春天,我如何從用戶的位置獲取有關位置(URL)的信息,以便我可以將其保存在某處並在用戶成功登錄後檢索它。我在Spring安全中看到過類似的功能。

+0

您使用的是哪個版本的Spring Security? –

+0

如果您只是刪除XML屬性default-target-url,會發生什麼情況? –

+0

@PauKiatWee:我不使用彈簧安全,但我知道同樣是在春季安全implimented –

回答

0

嗯,這其實很簡單:

  • 未驗證用戶試圖在你的應用程序訪問受保護的資源
  • 的安全過濾器截獲請求
  • 過濾店的網址在會話屬性中訪問受保護的資源
  • 過濾器轉發到登錄屏幕
  • 登錄成功後,將從會話中檢索URL,並且用戶是紅色的定向到這個URL

我只會這樣做是使用GET請求訪問受保護的資源。另一種變體是將受保護資源的URL存儲在登錄表單的隱藏字段中。

+0

什麼當用戶直接點擊登錄按鈕時,說我在產品詳細信息頁面上,用戶單擊登錄鏈接的標題部分。如何將他/她重定向到產品詳細信息頁面,因爲我沒有看到攔截器在這裏採取行動 –

+1

嗯,請確保爲包含當前頁面的URL的登錄頁面生成一個鏈接/按鈕:'Login'但我不太關心這種情況:如果用戶轉到登錄頁面沒有被強迫,這可能意味着他想離開當前頁面,因此在登錄後將其重定向到另一個頁面可能更有意義(頁面如下:「這是你可以做的你是通過身份驗證「,或簡單的主頁) –

+0

我明白你的觀點,但這是客戶的要求,我不能做太多,因爲他們是修正:( –