2015-02-05 48 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”] –