我有一个注销页面,上面写着这些代码。
HttpSession session = request.getSession(false);
if(session != null)
session.invalidate();
request.getRequestDispatcher("/index.jsp").forward(request,response);
然而,在单击注销按钮并重定向到index.jsp之后,我仍然可以使用浏览器的后退按钮访问以前访问过的链接。我该如何解决这个问题?在我退出之后,我将永远被重定向到index.jsp(我的登录页面),除非我再次登录?帮助
答案 0 :(得分:0)
HttpSession session = request.getSession();
if(session != null)
{
session.setAttribute("loginBean", null);
session.invalidate();
}
response.sendRedirect("index.jsp");
答案 1 :(得分:-1)
点击浏览器按钮,页面将从缓存中提供,您可以在浏览器的“网络”标签中查看(F12 in chrome
)。
在服务器端,你应该做以下事情。
1.您可以在公共点检查会话(假设它是filter
或任何servlet controller
(除了登录请求))。如果会话可用,则允许继续,如果没有,则将用户重定向到登录页面。
2.注销,正如您所做的那样session.invalidate()
3.我也建议在注销时将以下标题添加到HttpServletResponse
对象。
Cache-Control,Pragma,No Cache,Expire
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);