六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 36|回复: 0

js 判断session过期,并注销

[复制链接]

升级  1.33%

12

主题

12

主题

12

主题

秀才

Rank: 2

积分
52
 楼主| 发表于 2013-1-23 02:45:54 | 显示全部楼层 |阅读模式
客户希望如果没有操作,在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); 
至此,大功告成。
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表