session失效客户端页面跳转到登陆页面,应该在js中写吧?

发布于 2022-09-01 13:14:17 字数 1423 浏览 19 评论 0

如题,session失效客户端页面跳转到登陆页面,应该在js中写吧? 怎么写,请高手帮忙分析下,谢谢!

需要实现的功能是: session失效(用户长时间未操作客户端页面)后,客户端页面跳转到登陆页面,请用户重新登陆.

下面是从tomcat的web.xml页面中复制的.

  <!-- ==================== Default Session Configuration ================= -->
  <!-- You can set the default session timeout (in minutes) for all newly   -->
  <!-- created sessions by modifying the value below.                       -->

    <session-config>
        <!-- <session-timeout>30</session-timeout> -->
        <!-- <session-timeout>1</session-timeout> -->
        <session-timeout>1440</session-timeout>
    </session-config>

我自己做的实验:
(1)
A. 前提,将 <session-timeout>1</session-timeout> session失效时间改为 1 分钟.
B. 在home.jsp(我项目的首页)中添加js,内容为每隔10秒钟向后台java请求一次,查询当前登录用户的ID.
C. 测试没用,这种情况下,session永不失效.
D. 将 B 中的 ajax 去掉,改为在js中直接请求 <%=session.getAttribute("LOGIN_USER_ID")%> ,也是每10秒检验一次, 效果也是 session 永不失效.
(2)
前提和 (1) 一样, 失效时间为 1 分钟.
只是将 B 中的 间隔 10 秒 ,改为 间隔 1 分钟, 这时测试到的 session 失效了.
我很高兴,以为这样就可以写我的跳转登陆页面的代码了.
但是....
发现问题:
A. 先描述正常的情景: 用户不活动的情况下, 1分钟间隔后, js 检验到 session 失效, 执行跳转到登陆页面.
B. 有疑问的情景: 用户活动的情况下, 间隔为1分钟, 从 0 分钟开始, 0.2分钟时, 用户操作了页面, session-timeout重置为从0.2分钟开始, 但是, js 是从 0 分钟开始的. 这样我的 js 就出现漏洞了. 没想通怎么改正.或者这个思路不对,应该用其他办法来实现这个功能,请高手指点!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

人心善变 2022-09-08 13:14:17

1)session的过期时间当然是在程序里控制更加好

  HttpSession session = request.getSession();
  session.setMaxInactiveInterval(60);//单位为秒

2)提供一个思路,在server端添加一个计时器,每次用户请求的时候将最后操作时间传过去,根据这个时间计算销毁时间,时间到了就销毁掉。ajax请求则不带操作时间,到了时间后就自动销毁。

暖伴 2022-09-08 13:14:17

提供一种思路,是否可行有待实验

  • 服务端
    添加一个过滤器,在过滤器内写入一个cookie,cookie的过期时间与session过期时间一致

  • 客户端
    不发起ajax请求查找session,而是设置一个定时器检查cookie内是否存在那个服务器过滤器写入的那个cookie,如果不存在,则表示在这段时间内,客户端未与服务器交互,session过期。然后重定向到login页面。


另一种简单的处理方式是,完全在客户端进行处理,在客户端设置定时器检查session时间内是否有鼠标或键盘进行操作,如果没有则重定向。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文