防止用户在jsp中注销后返回

时间:2013-01-04 07:00:25

标签: java javascript jsp

  

可能重复:
  Prevent user from going back to the previous secured page after logout

我需要通过阻止用户在注销后访问它来保护java应用程序(mvc)。

目标:

1.注销后,用户不能使用浏览器后退按钮访问受限页面。 2.注销后,用户不能访问浏览器历史记录中的任何受限制的URL

谷歌搜索后我明白禁用浏览器后退按钮不是一个好习惯。那么我怎样才能在JSP中达到最佳效果?

感谢和安培;问候 阿希什

3 个答案:

答案 0 :(得分:7)

在每个页面中,您可以清除cached page

  <%
  response.setHeader("Cache-Control","no-cache");
  response.setHeader("Cache-Control","no-store");
  response.setHeader("Pragma","no-cache");
  response.setDateHeader ("Expires", 0);

  if(session.getAttribute("some_token")==null)
      response.sendRedirect("login/login.html");

  %> 

logout中,您必须使会话无效,因此当您点击它时会检查some_token中的session属性值,如果没有,则会将您重定向到login页面。但请记住,登录后您将在会话中设置some_token属性。

答案 1 :(得分:0)

保护资源的一般方法 -

  1. 在受限页面中放置会话属性检查(例如用户对象) 控制器。
  2. 注销后会话无效。

答案 2 :(得分:0)

对于每个受限制的JSP / Servlet,您应检查用户是否已登录。如果用户未登录,请将其重定向到非受限页面。 (你不需要任何JavaScript)

<%
   int userId = session.getAttribute("userId");
   if(userId == null) {
      response.sendRedirect(redirectURL);
   }
%>

当用户注销时,会使会话无效,因此当用户尝试访问受限制的JSP / Servlet页面时,您的身份验证逻辑将重定向他。

<% session.setAttribute("userId", null); // in your logout.jsp page %>