浏览 9160 次
锁定老帖子 主题:js 判断session过期,并注销
精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-14
客户希望如果没有操作,在30分钟后session过期,并且自动进行注销的操作。 显然服务器没有提供这方面的支持,所以只能从客户端下功夫。 实现的方式很简单,在js中记录进入页面的时间,通常用户的操作都会导致页面的刷新和url的变动,所以在公共的包含文件中加上如下的代码,1. 记录进入页面的时间。 2. 设置一个定时器,检查这个时间也现在时间的差值是否大于session过期的时间,也就是30分钟。 var globalLastSessionTime = new Date(); calcSessionTime=function(){ var now = new Date(); var past = now - globalLastSessionTime;//ms if(past>1800000){ logout(); } }
不过现在系统中存在一部分dwr的ajax方法和操作。这些ajax操作室不会刷新页面的,那也就没办法更新到globalLastSessionTime了,所以必须在每次dwr操作之前对这个时间进行更新,幸好dwr都提供了方法,不然每个dwr方法都要改,那就惨了。 dwr.engine.setPreHook(functionName); setPreHook可以再每次dwr远程调用之前运行指定的函数。 所以,再加上如下的代码就可以了: setSessionTime=function(){ globalLastSessionTime=new Date(); //alert(globalLastSessionTime); } DWREngine.setPreHook(setSessionTime);
至此,大功告成。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |