6
回答
java web session 会话失效提醒
华为云实践训练营,热门技术免费实践!>>>   

使用java web开发,需要一个会话失效提醒,用户在操作页面,离开一段时间后Session过期,需要给用户一个弹框提醒,会话已经失效,页面需不需要进行再次请求操作,使用js的定时器获取刷新出来,目前使用小脚本获取Session后,页面不刷新的话,小脚本内容只获取一次,使用Ajax与Dwr会导致用户前端和服务器端一直存在请求,导致Session一直有效,是否有什么好的办法来实现会话失效提醒

<无标签>
举报
Gavin_Luo
发帖于3个月前 6回/168阅

session就是保持会话的啊,你定时请求不就是和服务器交互么,session不会过期的,除非你设置了存活时间; 你这样只能预防session在服务器丢失了造成用户退出登录状态;

--- 共有 2 条评论 ---
JPer 回复 @Gavin_Luo : 可以的,就是要跨开http请求,用socket去判断服务器端session是否还在就可以了; 3个月前 回复
Gavin_Luo那有什么好的方式,可以从前端直接动态获取到Session是否失效呢 3个月前 回复

web.xml中配置session的失效时间,然后写一个Fiter过滤你的请求,判断session是否失效。session失效用户点击时,弹出窗口进行提示。

--- 共有 2 条评论 ---
Lob 回复 @Gavin_Luo : 不用请求,JS写一个倒计时,嵌套在所有页面中。计时结束后弹出窗口提示回话结束,跳转登陆页。 (一点建议) 3个月前 回复
Gavin_Luo最好是能从前端直接动态获取到Session,不请求后台的情况下获取到是否有这个Session,但是目前还没找到合适的方法 3个月前 回复

说一下我在公司项目中正在使用的方案吧:

核心就是:给session增加一个属性来记录上次的访问时间,增加过滤器,每次请求都检测这个时间与当前时间的时间差是否超时,将ajax轮询检测是否过期的url作为例外,即:如果是ajax轮询检测的请求,则不更新session的此属性。如果检测到session中的用户登录信息已经没有了(session自动过期了,理论上不会,因为你在不停地ajax轮询),或者session中自己记录的时间和当前时间的差超时了,则返回session过期的信息,js部分弹出框,轮询停止。。。。

 

定一个过期时间,比如a,服务端保存sessionid跟过期时间。js定时判断一下当前时间时候超过过期时间,如果超过,ajax判断一下上次合理请求时间,如果超过,清session,返回超时。页面提醒。没必要轮询去判断,太消耗服务端性能了
顶部