我们已经实施了类似于此other SO post中描述的系统。基本上,如果用户在14分钟内没有做任何事情,我们会提示他们将被注销。如果他们点击“让我登录”,我们会执行ajax请求以使其会话保持活动状态,否则,他们会在一分钟后重定向到注销页面。
它运作良好,并且与mint.com和bankofamerica.com等网站使用的类似系统一致。唯一的问题是我们的应用程序的用户倾向于打开多个选项卡来来回访问不同的数据。所以问题是他们可能在一个选项卡中正在工作,但是另一个选项卡超时并将其记录下来。这会导致用户在不期待它时突然发生会话超时。顺便说一句,mint.com也有同样的问题。
所以我想知道是否有人有任何想法来解决这个问题?
我有一个想法,每个请求都可以设置一个“最后活动时间”cookie。在自动注销时,服务器可以检查最后一个活动时间,如果它是相对较新的,请避免将它们注销。手动注销当然会忽略此cookie,因此如果用户想要注销,他可以随时进行注销。但是,我担心这可能会暴露出某种我目前无法看到的安全风险。想法?
答案 0 :(得分:2)
在显示弹出窗口之前,请询问服务器用户多久以前完成了他的上一次请求。