【问题标题】:cannot destroy session in jsp无法销毁jsp中的会话
【发布时间】:2014-04-18 09:16:34
【问题描述】:

我在我的注销页面中使用它:

session.invalidate();
response.sendRedirect("login.jsp");

然后在每个页面上检查是否正在设置会话

session.getAttribute("username");
HttpSession session1 = request.getSession(false);

if(session1== null )
{%>
    <jsp:forward page="login.jsp"/>
<% 
}
else
{%>
      load the content of the page

注销成功... 但是当我按下浏览器上的后退按钮时,它会返回到页面......我是最后一个。 我哪里错了,可以做什么

【问题讨论】:

  • 可能浏览器正在显示缓存文件,点击返回按钮后尝试刷新页面。
  • @Arvind 当我到达该页面并按刷新然后它返回到登录页面时,你说的是正确的,但它仍然会进入那个页面......我相信这不应该发生。 .你给的溶胶不起作用..你能推荐点别的吗

标签: jsp session


【解决方案1】:

你可以在 jsp 上试试这个,在登录之前你不想显示:

javascript

<script>
    window.onload=function() {
        history.forward();
    }; // trick to force user to redirect to the next page

    window.onunload=function () {};
</script>

【讨论】:

  • 我已经更新了代码试试看,但请确保在登录前按 ctrl + F5 清除缓存
  • 注销后我回到登录页面...但是当我按下返回时它会转到我使用的最后一页...然后我按刷新它会转到登录页面和后退按钮不再起作用..
  • 你的代码是正确的,但并不完全......这一点,如果你能给我更具体的答案或建议,我会有所帮助
【解决方案2】:
it get logout successfully... 
but when i press the back button on the browser
it get back to the page... i was last on. Where i am wrong and what can be done

你没有错。因为它是浏览器功能

1.如果您尝试执行任何操作。 (即)如果您尝试向服务器发送任何请求,您将不被允许这样做。

为了防止返回last页面,您可以在登录页面上尝试Disable the back button

希望这会有所帮助!

【讨论】:

    【解决方案3】:

    你的令牌概念来避免这种情况。

    登录成功后,在创建会话时,创建一个令牌并将其附加到会话。

    String token = UUID.randomUUID().toString();
    

    将其存储在会话中。

    session.setAttribute("token", token);
    
    Pass it as hidden input value of the form.
    

    在注销时,只需从会话中删除令牌。并将其转发到注销页面。在每个页面检查令牌,如果令牌不存在,则将其重定向到主页。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      • 2012-02-23
      • 2023-03-19
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      相关资源
      最近更新 更多