如何清除退出会话
当用户单击注销时,我将用户redirect到login页面,但是我不认为它会清除任何应用程序或会话,因为所有数据在用户重新login时都会持续存在。
目前,login页面有一个login控制,页面后面的代码只有login身份validation。
有人可以指导我一个很好的教程或文章处理login和ASP.NET网站?
Session.Abandon()
http://msdn.microsoft.com/en-us/library/ms524310.aspx
以下是HttpSessionState
对象的更多细节:
http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate_members.aspx
我更喜欢Session.Abandon()
Session.Clear()
不会导致End触发,并且来自客户端的进一步请求不会引发Session Start事件。
我使用以下来清除会话并清除aspnet_sessionID
:
HttpContext.Current.Session.Clear(); HttpContext.Current.Session.Abandon(); HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
Session.Abandon()
销毁会话并触发Session_OnEnd
事件。
Session.Clear()
只是删除Object中的所有值(内容)。 session with the same key
的session with the same key
仍然alive
。
所以,如果你使用Session.Abandon()
,你将失去那个特定的会话,用户将得到一个new session key
。 例如,当用户logs out
时,可以使用它。
使用Session.Clear()
,如果你想让用户保持在同一个会话中(如果你不想让他重新login),并重置所有的会话特定数据。
<script runat="server"> protected void Page_Load(object sender, System.EventArgs e) { Session["FavoriteSoftware"] = "Adobe ColdFusion"; Label1.Text = "Session read...<br />"; Label1.Text += "Favorite Software : " + Session["FavoriteSoftware"]; Label1.Text += "<br />SessionID : " + Session.SessionID; Label1.Text += "<br> Now clear the current session data."; Session.Clear(); Label1.Text += "<br /><br />SessionID : " + Session.SessionID; Label1.Text += "<br />Favorite Software[after clear]: " + Session["FavoriteSoftware"]; } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>asp.net session Clear example: how to clear the current session data (remove all the session items)</title> </head> <body> <form id="form1" runat="server"> <div> <h2 style="color:Teal">asp.net session example: Session Clear</h2> <asp:Label ID="Label1" runat="server" Font-Size="Large" ForeColor="DarkMagenta" > </asp:Label> </div> </form> </body> </html>
转到您的项目文件Global.asax.cs并添加下面的代码。
protected void Application_BeginRequest() { Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetExpires(DateTime.Now.AddHours(-1)); Response.Cache.SetNoStore(); }
它为我工作..! 参考链接在注销MVC 4上清除会话
Session.Clear();