在Logout Servlet中使会话无效

use*_*962 13 java jsp servlets

HttpSession session  = request.getSession();
try
{      
    session.removeAttribute("logonSessData");
    session.invalidate();                               
    String pageToForward = request.getContextPath();
    response.sendRedirect(pageToForward);           
}
catch (Exception sqle)
{
    System.out.println("error UserValidateServlet message : " + sqle.getMessage());
    System.out.println("error UserValidateServlet exception : " + sqle);
}
Run Code Online (Sandbox Code Playgroud)

在Logout servlet中我写了上面的代码doPostdoGet方法.注销后会显示登录界面,然后如果按下后退按钮,它会在注销前显示上一屏幕然后如果我点击任何页面显示"HTTP状态500",现在如果我按下F5则会加热登录Servlet并获得完全访问权限用户.

如何停止此问题显示在Logout使用后退按钮后F5用户无法使用任何页面?

Ram*_*PVK 5

你在做什么是好的.浏览器正在缓存之前的页面,当您单击后退按钮时,它将转到上一个缓存页面.

您需要添加不允许浏览器缓存页面的缓存标头.

Cache-Control: no-cache
Run Code Online (Sandbox Code Playgroud)


Aas*_*ray -3

您需要做的是将会话设置为基于会话的属性。

request.getSession().setAttribute("sess",request.getSession());

使用它来将其与当前会话进行比较。如果比较失败,则重定向到登录页面。这应该在每个页面中完成。