繁体   English   中英

为Web应用程序实现空闲超时的最佳方法是什么(自动注销)

[英]What is the best way to implement idle time out for web application (auto log off)

我想为我们正在构建的Web应用程序实现空闲超时。 我之前使用Codeplex中的AsynchronousSessionAuditor实现了这一点,它基本上通过常量轮询查找formsauthentication和会话cookie超时。

但它有一个不尊重客户端事件的缺点,它只会寻找最后一个回发来决定何时注销。

来自erichynds的jquery插件jquery-idle-timeout-plugin解决了这个客户端事件的问题,但是遇到了另一个无法识别用户在其他选项卡上处于活动状态的缺点。

有没有人已经用jquery-idle-timeout-plugin修复了TABBED浏览问题? 或者是否有更好的Web应用程序应用程序超时方法(通过使用asp.net f / w构建此Web应用程序)

如果我理解你的问题是正确的,那是不可能的,因为在javascript中没有触发当前窗口/选项卡之外的活动的事件。

除非你有一个插件与你的网站一起用于每个浏览器,它可以监控浏览器中的所有活动,但这不是一个真正的实用方法。

好吧,你必须手工编写代码,这并不是很难。 您可以使用onfocus和onblur函数执行以下操作:

$(function() {
    window.isActive = true;
    $(window).focus(function() { this.isActive = true; });
    $(window).blur(function() { this.isActive = false; });
    showIsActive();
});

function showIsActive()
{
    console.log(window.isActive)
    window.setTimeout("showIsActive()", 2000);
}

function doWork()
{
    if (!window.isActive) { /* Check for idle time */}
}

如果你进行一些搜索,你会发现这个问题的变种已经被问及并得到解答,你可以找到一个解决方案,你可以使用你提到的其中一个插件来实现。

尝试: 仅在选项卡处于活动状态时运行setTimeout如何判断浏览器/选项卡是否处于活动状态

编辑 - >增加:

或者我尝试不同的方法。 您可以使用一些哈希创建一个cookie,并在数据库中保存该哈希值,并在窗口处于活动状态时更新时间戳(您可以每5秒检查一次,这不是密集请求)
然后,在之前进行另一次检查(但在同一请求中)以查看自上一个时间戳以来已经过了多少时间并在必要时将其记录下来。
它不会在时间过去时将它们记录下来,但是当它们试图通过再次打开它或通过关注选项卡/窗口来访问该站点时它们将会被记录下来。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM