我正在使用的应用程序正在使用 jquery 实现一些会话超时提示。有一个计时器,如果在预定义的 X 分钟后没有用户活动,它会显示用户提示
(您的会话将很快结束...继续或注销)。
它使用此处找到的方法 - http://www.codeproject.com/Articles/227382/Alert-Session-Time-out-in-ASP-Net。
但是,如果用户打开新选项卡,这将不起作用:
1)用户登录,计时器开始计算用户不活动的次数。
2) 用户点击在新窗口中打开的一些链接(例如,在我们的例子中,它是一个长报告运行)。第二个选项卡处于活动状态,有一些响应(没有结束会话的交叉/回发)。
3) 第二个浏览器选项卡处于活动状态,有一些活动不会结束会话。
4)但是,第一个浏览器选项卡处于非活动状态,计数器“认为”应该关闭会话,它显示适当的消息,然后注销用户。
这不是我们想要的。所以给定的方法只是一些会话超时修复,但如果用户在另一个选项卡中处于活动状态,那么应用程序无论如何都会注销用户。那不是我们想要的。我们有一个报告页面。它的功能是在新选项卡/窗口中打开报告。它可以运行很长时间。报告部分负责一些回调,因此会话不会在此选项卡中结束。但是,它将在第二个选项卡中结束。
编辑: 我有以下解决方案:“存储一个 Javascript cookie 并检查以确定会话是否已在另一个选项卡中扩展?”。我仍在努力理解这一点。