我想为我的html网页编写一个javascript程序,强制用户在离开会话空闲x分钟(没有鼠标移动或按键)后重新输入密码以恢复会话。
请注意,我不是在谈论在时间结束时销毁会话/关闭会话,而是强制用户注销。我只是试图通过弹出框来“暂停”会话,用户必须输入用户名和密码才能恢复工作。
由于
答案 0 :(得分:0)
您可以使用
var timeoutHolder=setTimeout(pauseSession,60000*nMinutes);
然后每次用户按键时重置时间
window.addEventListener("keydown", function(e){
clearTimeout(timeoutHolder);
var timeoutHolder=setTimeout(pauseSession,60000*nMinutes);
});
您还可以创建类似的事件来检测鼠标移动。最后,只需定义一个显示弹出窗口的pauseSession函数。
关于安全性的一些想法:您应该考虑到在客户端执行的任何此类措施都很容易规避,因此只有在不暗示安全风险的情况下才应该使用。
更复杂的版本是向服务器发送消息并在那里跟踪定时器,因此用户无法改变它。但是,用户可以发送假击键和键移动,因此它仍然是一个易受攻击的解决方案。
TL; DR:客户端中的所有内容都要更改。在客户端中检测到键和鼠标移动,因此考虑到用户将始终能够禁用您的密码提示。自上次页面加载或xmlhttprequest以来的分钟可能是更好的度量,因为它可以在服务器中完全实现。