2012-05-08 202 views
2

上午面臨一個奇怪的問題。 我的註銷代碼如下:按下後退按鈕會話不會破壞

@RequestMapping(value = "/logout", method = RequestMethod.GET) 
    public String thanks(HttpSession session) { 
     session.removeAttribute("parentEmail"); 
     session.invalidate(); 
     return "redirect:parent-login"; 
    } 

但註銷後,我得到的環節/[email protected]

所以,當我再次按下後退按鈕時上次訪問的頁面上,並且可以更新數據。 電子郵件我已設置爲會話屬性。

有人可以告訴我爲什麼得到這個URL。

+0

你有沒有在你的HTML代碼正確chaching指令? – home

+0

您的頁面可能包含在您的頁面顯示後加載的資源(圖片,iframe等),並重新初始化您剛剛失效的會話。 – Twilite

回答

1

默認情況下,所有模型屬性都被視爲以URI重定向URL中的模板變量的形式公開爲URI 。其餘屬性 那些原始類型或原始類型的集合/數組類型自動附加爲查詢參數。

使用redirectAttributes.addAttribute()來附加所需的查詢參數。 您還應該通過設置該對象使ModelMap中的任何身份驗證相關對象失效。null model.addAttribute(「parentLogin」,null);

那麼你的方法應該是這樣的:

@RequestMapping(value = "/logout", method = RequestMethod.GET) 
public String thanks(Model model,RedirectAttributes redirectAttributes,HttpSession session) { 
redirectAttributes.addAttribute("logout", "1234"); 
model.addAttribute("parentLogin",null); 
session.removeAttribute("parentEmail"); 
session.invalidate(); 
return "redirect:parent-login"; 
}