【问题标题】:After pressing back button session doesnot destroy按下后退按钮会话不会破坏
【发布时间】:2012-05-16 16:45:20
【问题描述】:

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

@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

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

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

【问题讨论】:

  • 您的 HTML 代码中是否有适当的 chaching 指令?
  • 您的页面可能包含在您的页面显示后加载并重新初始化您刚刚失效的会话的资产(图像、iframe 等)。

标签: java spring hibernate jsp session


【解决方案1】:

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

使用redirectAttributes.addAttribute() 附加所需的查询参数。 您还应该通过将该对象设置为 null 来使 ModelMap 中的任何与身份验证相关的对象无效 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";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多