簡體   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