2

我面临一个奇怪的问题。我的注销代码如下:

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

但注销后我得到链接/logout?email=xyz@xyz.com

所以当我在最后访问的页面上再次按下返回按钮时,可以更新数据。电子邮件我已设置为会话属性。

谁能告诉我为什么会得到这个网址。

4

1 回答 1

1

默认情况下,所有模型属性都被视为在重定向 URL 中作为 URI 模板变量公开。在剩余的属性中,那些是原始类型或原始类型的集合/数组的属性会自动附加为查询参数。

使用 redirectAttributes.addAttribute() 附加所需的查询参数。您还应该通过将该对象设置为 null model.addAttribute("parentLogin",null); 来使 ModelMap 中的任何与身份验证相关的对象无效。

所以你的方法应该是这样的:

    @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";
}
于 2012-05-09T13:52:56.447 回答