我有一个 servlet,我使用 POST 验证登录并使用 GET 验证注销。因此,我希望当我单击注销按钮时,我无法返回到上一页,因为会话已终止。但它并没有发生。当我点击注销按钮时,我仍然可以返回到上一页。
所以这是我在 servlet 中注销的代码
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("action");
if ("logout".equals(action)) {
HttpSession session = request.getSession();
session.invalidate();
response.sendRedirect("loginpage.jsp");
}
}
注销按钮代码
<li class="nav-item"><a class="nav-link" href="logout?action=logout">Logout</a></li>
我重定向到登录页面,但是当我在浏览器中“单击返回”时,即使我检查会话,我仍然可以返回
这是我在每个页面上放置的用于验证会话的代码
<%
HttpSession ses = request.getSession(false);
if (ses == null || ses.getAttribute("name") == null) {
response.sendRedirect("login-form.jsp");
return;
}
%>
代码看起来是正确的。尝试禁用浏览器缓存,以便使用后退按钮的请求可能会使用它们。对于 Firefox:开发者工具 -> 网络 -> 禁用缓存。
或者尝试通过服务器响应禁用缓存。
如果您通过 POST 发送登录信息,则不包括“重新发送新会话的请求”。如果还是不行,请尝试将资源放入 WEB-INF 中,这样您只能从 servlet 通过调度程序访问。