2010-10-11 182 views
0

我希望我的應用程序註銷登錄的用戶,並在會話超時後立即將他們帶到Loing.aspx頁面。應該註銷用戶而不觸發任何事件。我試圖在認證模式中進行更改,但都是徒勞的...會話超時註銷用戶

+0

什麼是你的代碼和配置的樣子呢?它如何失敗?沒有更多的信息很難幫助。 – 2010-10-11 23:02:38

回答

1

Web窗體不像Windows窗體,但您可能會玩一下。

您無法捕捉Session.End事件並將用戶重定向到其他地方,但您可能會使用cookie。會話過期,Cookie的過期由您的代碼控制。

是進入我腦海的第一件事就是登錄後設置cookie,然後在每個頁面加載檢查

if (cookie is present && Session["LoggedIn"]==null) 
    Response.Redirect("Login.aspx"); 

這是一個強力手寫僞代碼,可以幫助你做出一個想法。

但是另一個問題會上升:如果您處於受保護區域並且會話過期,那麼只要您配置了身份驗證好了,ASP.NET 應自動將您帶入登錄頁面。

通過「以及配置」我的意思是下面所有的標準程序到你的web應用程序中創建保護區,並使用Forms身份驗證:RTFM爲http://www.asp.net/security/tutorials/an-overview-of-forms-authentication-vb

1

如果你的窗體身份驗證是正確設置(Like mentioned here),並給予您無論如何不希望在會話超時時捕獲任何事件,那麼理想情況下,如果用戶在InActive 20分鐘(這是默認會話超時時間,除非您更改它),應用程序會自動將任何下一個請求重定向到Login.aspx。但請確保您遵循上述鏈接中提供的所有步驟(基本上正確的認證和授權標籤等)。

+0

我猜這裏的提問者希望用戶的瀏覽器在服務器上的會話超時後立即進入login.aspx頁面,而不是在用戶下一次嘗試訪問另一個頁面時進入該頁面。 – MusiGenesis 2010-10-14 23:15:08

0

嘗試<system.web>下添加以下標記在web.config中

<sessionState mode="InProc" timeout="200"></sessionState>