许多网站(例如银行网站) - 在会话即将到期之前实施注销 + 1 分钟警告。(20 分钟)
(这个话题讨论得不多——我看到的唯一问题是使用 asp.net 会员资格——我不使用)
每个用户都会有一个session["lastActionTime"]
此会话将更新为当前时间:
- 页面已加载
- Ajax 请求已执行(由于用户操作)
现在 - 当页面加载时,我设置会话值。(假设是 19:00)
此外,对于每个 ajax 请求(我的站点不创建回发 - 仅 ajax jquery) - 我使用 ASHX 处理程序将会话IRequiresSessionState
更新为当前时间。
我使用这样的东西:
jQuery(document).ajaxStart(function(){
gotoHandlerAndUpdateSessionTime();
})
现在 - 警告消息前 1 分钟的部分(“您的会话即将到期”):
每个 ajax 返回事件或事件 - 我在javascript中page load
激活:分钟(20-1=19)。(当然 - 取消所有 prev setIntervals...)setInterval
[sessionTime-1]
现在当事件(setInterval)发生时 - 到期时间前 1 分钟:(19 分钟)
我显示一个警告 div ,用户可以选择exit或stay。
问题 :
1)如果用户没有在警告 div 上按任何内容,我将如何(在显示 div 1 分钟后)将他注销?我应该在显示 div 时打开 1 分钟的 setTimeout 然后(如果没有按下)将他注销吗?
2)这是正确的做法吗?
3)在这个奇怪的故事中不应该有饼干吗?:-)
(请 - 没有会员资格 - 或表单身份验证)。我也将这个问题标记为 PHP,因为我知道它也与 php 程序员有关,我想听听他们的知识。