我想檢查會話過期與否。 所以我決定創建一個名爲IsServerExpired的動作,讓它返回一個包含布爾值的json對象和重定向url。處理會話在MVC 2中過期與AJAX
因此Java腳本函數會做一個Ajax請求以指定的時間間隔這個操作。 我有一些基本的問題..
1.如果我發送一個Ajax請求,我認爲,這將刷新會話時間。所以實際上,如果我使用這種方法,會話將不會過期。我對嗎 ?
如果刷新我怎麼能檢查會話過期使用輪詢
我想檢查會話過期與否。 所以我決定創建一個名爲IsServerExpired的動作,讓它返回一個包含布爾值的json對象和重定向url。處理會話在MVC 2中過期與AJAX
因此Java腳本函數會做一個Ajax請求以指定的時間間隔這個操作。 我有一些基本的問題..
1.如果我發送一個Ajax請求,我認爲,這將刷新會話時間。所以實際上,如果我使用這種方法,會話將不會過期。我對嗎 ?
如果刷新我怎麼能檢查會話過期使用輪詢
一旦會話過期,還有更簡單的方法可以註銷用戶。
您可以保存在某個地方SessionTimeout
在客戶端和運行客戶端計時器,計時器一旦達到最終用戶重定向到註銷URL。
這裏是一個例子。 Model
here containts SessionTimeout
value。
$(document).ready(function() {
var timeOutInMinutes = @Model;
if(timeOutInMinutes > 0)
{
setTimeout(function() {
window.location =
'@Url.Action("Logout", "Authentication", new {area=""})';
},timeOutInMinutes * 1000 * 60);
}
});
更多用戶友好的方式是顯示彈出窗口,會說,會議將wihtin一分鐘內結束(如果會話超時15分鐘,再經過14分鐘表現出來),這樣用戶就可以刷新頁面。並繼續工作。
我認爲你是一個ASP.NET會話和身份驗證cookie之間撲朔迷離。我懷疑你在這裏談論身份驗證cookie到期。如果您在web.config中將slidingExpiration
設置爲true,則輪詢AJAX請求將更新超時,以使其不適用。 Phil Haack描述了一種在this blog post的AJAX調用中檢測驗證cookie過期的非常優雅的方法。
如果我在頁面加載後做了ajax調用,這個方法就不會考慮這個。不是嗎?這是我的情況的一個缺點。 – Lijo 2013-10-14 12:15:24
是的,根據web.config中的會話超時值,此方法僅在客戶端等待。 – 2013-10-18 05:40:11