会话超时提示asp.net

时间:2012-12-13 10:49:06

标签: asp.net timeout

我正在使用的应用程序正在使用jquery实现一些会话超时提示。有一个计时器计数,如果在预定义的X分钟后没有用户活动,它会显示用户提示

(您的会话将很快结束......继续或退出)。

它使用此处找到的方法 - http://www.codeproject.com/Articles/227382/Alert-Session-Time-out-in-ASP-Net

但是,如果用户打开新标签,则无法执行此操作:

1)用户登录,计时器开始计算用户不活动的数量。

2)用户点击在新窗口中打开的某个链接(例如,在我们的例子中,它是一个长报告运行)。第二个选项卡处于活动状态,有一些响应(不会结束会话的交叉回传/回发)。

3)第二个浏览器选项卡处于活动状态,有一些活动无法结束会话。

4)然而,第一个浏览器选项卡处于非活动状态,计数器“认为”该会话应该关闭,它会显示相应的消息然后注销用户。

这不是我们想要的。因此,给定的方法只是一些会话超时修复,但如果用户在另一个选项卡中处于活动状态,那么应用程序仍会注销用户。这不是理想的事情。 我们有一个报告页面。它的功能使它在新的选项卡/窗口中打开报告。它可以运行很长时间。报告部分负责一些回调,因此会话不会在此选项卡中结束。但是,它会在第二个标签中结束。

修改 我有以下解决方案:“存储Javascript cookie并检查以确定会话是否已在另一个选项卡中扩展?”。 我仍在努力理解这一点。

1 个答案:

答案 0 :(得分:2)

您可以使用LocalStorage概念来保存上次活动时间。

如果您将其保存在其中一个标签上,也可以从其他标签中访问...

所有modern browsers支持此功能。

示例:

检测到活动时使用:

localStorage['lastActivity'] = new Date();

当您想要检查时:

var lastActityTime = localStorage['lastActivity'];