【问题标题】:Preventing User to go back after logout in jsp [duplicate]防止用户在jsp中注销后返回[重复]
【发布时间】:2012-12-18 14:59:35
【问题描述】:

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

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

目标:

1.最终用户在退出后应该无法使用浏览器后退按钮访问受限页面。 2.最终用户在退出后应该无法访问浏览器历史记录中的任何受限URL

谷歌搜索后,我了解到禁用浏览器后退按钮不是一个好习惯。那么我怎样才能在 JSP 中最好地实现这一点?

谢谢&问候 阿什什

【问题讨论】:

  • 使用java脚本清除缓存!

标签: java javascript jsp


【解决方案1】:

在每个页面中你大概可以清除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 中,您必须使会话无效,因此当您单击返回时,它会检查session 中的some_token 属性值,如果不存在,它会将您重定向到login 页面。但请记住,登录后您在会话中设置some_token 属性。

【讨论】:

  • 不好的做法。这还不够干。
【解决方案2】:

保护资源的一般方法 -

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

【讨论】:

    【解决方案3】:

    对于每个受限 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 %>
    

    【讨论】:

    • 这不考虑浏览器缓存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    相关资源
    最近更新 更多