2011-04-02 72 views
0

我期待在基本頁面中包含一個行爲,當會話超時(在說20分鐘後),回撥到客戶端,擦除會話cookie,並將用戶重定向到「您的會話已超時」頁面。如何在asp.net中超時客戶端會話

在我開始編碼之前,我想知道在框架中是否有一個功能已經處理了。

謝謝。

回答

1

試試這個

<script language='javascript'> 
function SessionTimeOuts() 
{ 
    self.setTimeout("RedirectToLogin();", 'any time period you wish to put here'); 
} 

function RedirectToLogin() 
{ 
    alert('Your session has expired.'); 
    window.location.href = 'login.aspx' 

//any page where you want the redirection 
} 

</script> 

<BODY onload=SessionTimeOuts()'> 
+0

起初,我認爲這是偉大的,但後來我認爲,如果會話過期是由JavaScript處理,它可以被篡改。有沒有辦法讓服務器回電話頁面? – frenchie 2011-04-03 02:50:43

+0

如果沒有使用javascript(或Silverlight等),如何從服務器進行回調是沒有辦法的。所以它總是容易受到客戶端的變化。通過適當配置會話和身份驗證cookie超時,可以增強極客的解決方案。請參閱http://stackoverflow.com/questions/1470777/forms-authentication-timeout-vs-session-timeout。攻擊者仍然可以修改(或只是禁用)這個JavaScript,但他會被重定向到會話過期後的下一個請求的登錄頁面。可能是它更簡單的使用http重定向而不是此javascript。 – 2011-04-03 10:06:53

+0

@Jakub:感謝您的鏈接和意見 – 2011-04-03 11:03:40

0

糾正我,如果我錯了,但ASP.Net已經在這樣做。您只需在每次回發或ajax調用後向客戶端發送間隔值即可。在這段時間內,您還必須執行一個超時功能,將「您的會話已過期」對話框視爲@geek下面提到的。