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