2015-05-13 74 views
0

我正在使用基於Spring的Web應用程序的Java/J2EE &。我們使用彈簧安全配置進行登錄。我有一個要求,並沒有得到如何實施它。要求: 每當匿名用戶點擊主頁上的「查看地址簿」鏈接時,他們應該重定向到登錄/註冊頁面。並且登錄/註冊頁面的標題應設置爲「請登錄/註冊以查看您的地址簿」。春季安全 - 傳遞參數登錄頁面

現在,在這裏我沒有得到什麼參數我應該改變登錄/註冊頁面標題。

請建議。對特定文件/步驟的參考將不勝感激。

問候, 阿倫

回答

1

您可以使用SavedRequest接口。 Spring安全使用SavedRequest類型來存儲重定向url和參數。

  1. 創建一個自定義登錄控制器來爲您的login.jsp視圖提供服務。
  2. 從HttpSessionRequestCache獲取SavedRequest對象
  3. 獲取請求的url和參數savedRequest。
  4. 將它作爲模型屬性傳遞給login.jsp頁面。

    @Controller 
    public class LoginController { 
        @RequestMapping("/login") 
        public ModelAndView showLoginPage(HttpServletRequest request, HttpServletResponse response) { 
    
         SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response); 
    
         String requestedUrl = savedRequest.getRedirectUrl(); 
         ModelAndView model = new ModelAndView("login"); 
         model.addObject("requestedUrl",requestedUrl); 
         return model; 
        } 
    } 
    

    您還可以通過

    savedRequest.getParameterValues("parameterName"); 
    
+0

嗨sadasidha get請求參數,httpSessionRequestCache是​​在我的控制器已經存在。我不知道它的用法。感謝您的輸入。它在一定程度上解決了我的問題。實際上,現在,只要點擊「查看地址簿」鏈接,就會在「登錄/註冊」頁面顯示正確的消息。但是,如果我點擊'登錄'鏈接,然後還保存請求返回保存的參數和jsp再次顯示地址簿消息。你有處理這種情況的好方法嗎? – Arun

+0

@Arun - 如果請求來自登錄頁面,您可以讓depores顯示和/或從savedRequest中移除參數。 也考慮接受我的答案,如果有幫助。 – mirmdasif

+0

我可以在提供'referer'檢查後修復它。謝謝!沒有看到任何選擇接受。已經投了票。 – Arun