javascript设置间隔 session 管理

标签 javascript session setinterval

我正在开发一个基于 session 的项目。我在想,与银行类似,我会创建一张支票并为用户提供阻止 session 超时的能力。

我正在考虑创建一个 setInterval 来检查需要身份验证的空白页面。如果计时器接近结束时间,它会弹出一个对话框,通知用户 session 即将结束。 “保持登录”按钮将重置计时器,并且还会向他们提供注销选项。如果设置的时间间隔从检查器页面获取“401”,则当前页面将刷新到登录屏幕。

这有道理吗? setInterval 会让浏览器陷入困境吗?

顺便说一句:基于用户交互来清除间隔的最简单方法是什么?我需要检查每个按键和/或鼠标事件吗?或者是否有更广泛的方法来检查用户是否正在与页面交互(例如焦点检查或其他)?

短歌。

<小时/>

所以,我使用的框架存在一些问题。 session 处理不是很好,因此更新 session 超时而不是始终基于登录后的时间超时似乎存在问题,而不是自上次事件以来。无论如何,已经处理好了。我现在想知道的问题是,通过检查 session 是否仍然通过 setInterval 进行身份验证, session 将通过检查进行更新,因此 session 永远不会超时。或者,我错过了什么吗?

<小时/>

我决定只用 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);
    });
}

最佳答案

Does this make sense? Would the setInterval bog down the browser?

这应该可以正常工作。只要间隔相当大(几秒到一分钟)并且每次迭代不会增加全局数据结构的大小,我预计它不会使浏览器陷入困境。

As an aside: what is the easiest way to clearInterval based on user interaction? Would I need to check for every keypress, and/or mouse event? Or is there a broader way of checking if the user is interacting with the page (like a focus check or something)?

也许向顶级页面元素(例如容器 div)添加一些事件处理程序可能会有所帮助。

关于javascript设置间隔 session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1840990/

相关文章:

javascript - 我想使用 async/await 访问 API

javascript - 需要 JS 未找到某些依赖项,错误为 'undefined'

java - Tomcat session 意外过期

javascript - setInterval计数器问题

reactjs - 为什么clearInterval 不停止我的计时器?

javascript - 显式设置 CouchDB 文档键

javascript - 如何在javascript中将字符串转换为化学式

node.js - 快速 session 不保存nodejs

重定向后 ASP.NET session 丢失,但仅限于 IE

javascript - 防止 JQuery 触发后重新加载页面