【发布时间】:2013-03-14 20:31:40
【问题描述】:
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);
}
在注销 servlet 中,我在 doPost 和 doGet 方法中编写了上述代码。注销后它显示登录屏幕,然后如果我按返回按钮,它会在注销前显示上一个屏幕,然后如果我点击任何页面,它会显示“HTTP 状态 500”,现在如果我按 F5 那么它正在加热登录 Servlet 并获得用户的完全访问权限。
如何停止这个问题显示在使用后退按钮注销后 F5 用户不能使用任何页面?
【问题讨论】:
-
也许您的应用程序的其他一些服务也在使用该会话,而您正在使整个会话无效。尝试只删除身份验证属性而不调用
invalidate()。 -
如果您仍然无效,则无需调用 session.removeAttribute(...)。