2015-02-05 50 views
0

我開發Asp.Net MVC 5剃刀應用檢測會話終結。我維護單獨的表以維護登錄信息。當用戶登錄時,我在該表中的成功回調登錄的字段(IsLoggedIn)中輸入「true」。當用戶註銷時,我在註銷模塊成功回調時在該字段中輸入'false'。在Asp.Net MVC 5剃刀應用

我有一個問題。如果用戶不按下注銷按鈕,並且其會話已過期,則會註銷。我沒有調用註銷的成功回調,數據庫中的「IsLoggedIn」字段對該用戶仍然顯示爲true。

我無法找到關於如何檢測會話過期事件,並呼籲我的表更新用功能把「假」,在「IsLoggedIn」字段爲用戶排什麼?

任何幫助?

+0

SessionState的哪模式你在用嗎? –

+0

在我的web.config中沒有這樣的東西。 –

+0

你在web.config中沒有看到像的任何內容? –

回答

0

會話超時可以在Session_End中的事件在Global.asax中進行處理,如果使用的是InProc SessionState的模式,你的應用程序(這是默認ASP.net如果未指定)

void Session_End(object sender, EventArgs e) { 
    // perform your logic 
} 

這樣記住一個前事件該事件將被調用,但不一定在超時之後。

也考慮到這一點,According to MSDN,該HttpSessionState.Timeout酒店有setter和可以從應用程序代碼內,永久地在web.config改變以及

希望這有助於

+0

太好了。它檢測會話結束,但HttpContext.Request.Cookies在Session_End方法中不可用。 –

+0

在會話結束事件中,您需要使用Cookie來做什麼? –

+0

我的會話詳細信息,用戶名和sessionId保存在cookie中。 HttpContext.Current.Session.SessionIDRequest.Cookies [ 「LoginDetail」] –