gpt4 book ai didi

java - 注销后,当我在浏览器中单击后退按钮时,页面仍然可以访问,同时刷新它工作正常

转载 作者:行者123 更新时间:2023-11-29 04:57:24 25 4
gpt4 key购买 nike

我在 jspservlet 中有一个网页

我正在登录页面,它被重定向到 homepage.jsp

在登录时,我在我的 servlet login.java 中设置 session 变量如下:

HttpSession ss = rq.getSession(true);
ss.setAttribute("uid", rstusrdetail.getInt(1));
ss.setAttribute("username", rstusrdetail.getString(2));

我也有一个注销按钮和我的 logout.java 如下:

try {
HttpSession ss = rq.getSession(false);
if (ss.getAttribute("uid") == null || ss.getAttribute("username") == null ) {
rs.sendRedirect("/");
}

rs.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
rs.addHeader("Cache-Control", "post-check=0, pre-check=0");
rs.setHeader("Pragma", "no-cache");
rs.setDateHeader("Expires", 0);
HttpSession session = rq.getSession(false);
session.setAttribute("uid", null);
session.setAttribute("username", null);
session.invalidate();
rs.sendRedirect("/");
} catch (Exception exp) {
RequestDispatcher dd = rq.getRequestDispatcher("/");
dd.forward(rq, rs);
}

注销后,当我点击后退按钮时,它被重定向到 homepage.jsp

如果我刷新然后我收到 session 过期消息。如果我直接访问该页面,我也会收到 session 过期消息。

我怎样才能点击后退按钮让 session 过期而不刷新,或者有什么方法可以禁用浏览器中的后退按钮?

最佳答案

在每个需要登录的页面顶部添加如下代码:

HttpServletResponse httpResponse = (HttpServletResponse)response;

httpResponse.setHeader("Cache-Control","no-cache, no-store, must-revalidate");
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
httpResponse.setHeader("Pragma","no-cache");
httpResponse.setDateHeader ("Expires", 0);
if (session.getAttribute("uid") == null || session.getAttribute("username") == null ) {
response.sendRedirect("/invalidSession.jsp");
return;
}

关于java - 注销后,当我在浏览器中单击后退按钮时,页面仍然可以访问,同时刷新它工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33256772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com