这是我的过滤器代码,下面是doPost()
我的 servlet 中的方法。我正在尝试实现注销功能。单击注销按钮时,控制权被发送到 servlet,然后重定向到我的登录页面。但是,我有一个问题。浏览器显示页面未正确重定向。我一直在讨论关于这个主题的所有问题,但似乎没有什么能帮助我。我也有后退按钮问题,即使在注销后也会将用户带回页面。有人可以解释我做错了什么吗?
注销过滤器.java
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession(false);
if (session == null || session.getAttribute("loginUsername") == null) {
response.sendRedirect("login.jsp"); // No logged-in user found, so redirect to login page.
} else {
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0);
chain.doFilter(req, res);
}
}
LogoutServlet.java
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getSession().invalidate();
RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
rd.forward(request, response);
}
编辑:另外,当我从我的项目中输入一个页面的随机 url 时,它会显示而无需用户登录。怎么做才能避免这种情况发生?
更新:我通过使用一些验证并相应地重定向到登录页面解决了随机 url 页面显示问题。注销功能正在运行。但是,当我按下后退按钮时,它会重定向到登录页面本身(根据需要),但是,再按一次后退按钮,浏览器会显示Document Expired消息,如果我按下刷新,安全页面会再次显示。谁能告诉我这里可能是什么问题?