我正在从事一个基于会话的项目。我在想,类似于银行,我会创建一张支票并为用户提供阻止会话超时的能力。
我正在考虑创建一个 setInterval 来检查需要身份验证的空白页面。如果计时器接近结束时间,它会抛出一个对话框,告知用户会话即将结束。“保持登录”按钮将重置计时器,并且还会向他们提供注销选项。如果设置的时间间隔从检查页面获得“401”,则当前页面将刷新到登录屏幕。
这有意义吗?setInterval 会阻塞浏览器吗?
顺便说一句:根据用户交互清除Interval 的最简单方法是什么?我需要检查每个按键和/或鼠标事件吗?或者是否有更广泛的方法来检查用户是否正在与页面交互(如焦点检查或其他东西)?
坦卡。
所以,我使用的框架有一些问题。会话处理不是很好,因此更新会话超时似乎有问题,而不是总是根据登录后的时间让它超时,而不是自上次活动以来。总之,处理好了。我现在想知道的问题是,通过检查会话是否仍然通过 setInterval 进行身份验证,会话将通过检查更新,因此会话永远不会超时。或者,我错过了什么?
我决定只用javascript来处理它。在框架配置中将超时设置为never
,并setTimeout
专门处理超时。
function alerter(msg){
//warn user session about to expire; give opportunity to save
}
function killSess(){
window.location = '/logout';
}
function sessTimer(time){
timerID = window.setTimeout('killSess();',time);
}
function observe(div){
Event.observe(div, 'click', function(){
clearTimeout(timerID);
sessTimer(30000);
});
Event.observe('bodyDiv', 'keydown', function(e){
clearTimeout(timerID);
sessTimer(30000);
});
}