2012-12-25 162 views
0

假設我們在發送給用戶的電子郵件中有一個指向目標頁面的鏈接(不是登錄頁面)。如何在用戶登錄後將用戶重定向到目標頁面? Spring在後端。如何在用戶登錄後將用戶重定向到目標頁面

+0

請提供您當前的登錄碼! –

+0

只需要登錄目標頁面?如果目標頁面沒有登錄請求,那麼Spring Security(或者你正在使用的任何認證框架,包括標準的Java EE容器管理認證)應該已經自動記住最初請求的頁面,並在成功登錄後重新導向它。或者您是否使用本地認證? – BalusC

+0

@BalusC我們正在使用本土認證。 – blue123

回答

3

我們使用自主開發的認證

在當你繼續請求(在自產自銷的認證情況下,在servlet filter通常執行)之前檢查的那一刻,你可以使用HttpServletRequest#getRequestURI()來獲取當前的請求URI。

String requestedURI = request.getRequestURI(); 

你只需要在會話範圍內或者作爲登錄表單的隱藏輸入字段來記住這一點。一旦登錄成功,那麼你只需要重定向到它。

response.sendRedirect(requestedURI); 
+0

如果'Cookie'用於存儲數據而不是會話或隱藏輸入,有什麼缺點? –

+0

這很笨拙。會話更容易使用(並且已經被cookie支持,參見http://stackoverflow.com/questions/3106452/how-do-servlets-work-instantiation-session-variables-and-multithreading/ 3106909#3106909)。 – BalusC

2

要添加細節BalusC的答案,即使你使用的是自家種的解決方案,我強烈建議你閱讀過的"Authentication in a Web Application" Spring Security的描述。這很短,基本上是對你的問題的直接回答,並提供一些關於如何實施的提示。如果你想深入挖掘,你可以跳到Javadocs甚至挖掘到source code看看他們是如何做到的。這是一個非常優雅而靈活的解決方案,借用項目的一些想法甚至代碼是沒有壞處的。

相關問題