2013-02-22 123 views
1

只是出於好奇,如果我有20分鐘的會話超時,並會發生以下情況:會話長度在呼叫開始時還是在呼叫結束時延長?

  1. 用戶訪問一個網站。初始會話超時開始。
  2. 在同一頁上的一分鐘後$.post("/api/longrunningfuction", function() { alert("success"); })被調用。
  3. 郵寄電話需要10分鐘才能返回(希望不太現實,只是爲了幫助我解決問題)。

會剩餘時間現在是:

  1. 20分鐘由於後調用返回和延長會議?
  2. 10分鐘(通話時間延長了會議,但已經過去了10分鐘)。
  3. 其他?

回答

1

documentation用於會話結束事件表示,(重點煤礦)

當由Timeout 屬性中指定的分鐘數過去而沒有請求正在取得用於會話的會話到期。

因此應該有剩餘的10分鐘。

我還沒有看到框架代碼,但會話持續時間通過設置在響應身份驗證cookie持續時間的控制。因此,它似乎是合乎邏輯的是,即使當你的服務器端代碼有完成,新的到期時間的計算當請求收到新的cookie被髮送。如果在計算到期時間和將時間傳回給客戶的時間之間經過10分鐘,那麼10分鐘的會話已經丟失。

1

會議擴建工程通過重寫窗體身份驗證cookie來響應。更具體地說,如果您啓用了您的表單認證滑動到期(通常不建議出於安全原因),當一個請求被髮送到服務器,窗體身份驗證模塊攔截在這個請求開始請求,它解密的形式身份驗證cookie以提取表單身份驗證票據並修改此票證的到期日期並將新的cookie添加到響應中。所有這些都發生在請求的開始處。這意味着該會話將從那一刻起延長20分鐘(或任何超時定義)。

然後讓我們假設整個請求需要10分鐘返回到客戶機(和分別刷新形式驗證cookie)的響應之前完成。當客戶收到這個cookie時,剩下10分鐘的時間才能生效。