2012-05-08 203 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"; 
}