كيفية مسح الجلسة عند تسجيل الخروج
-
19-08-2019 - |
سؤال
أقوم بإعادة توجيه المستخدم إلى صفحة تسجيل الدخول عندما ينقر المستخدم على تسجيل الخروج، لكنني لا أعتقد أنه يمسح أي تطبيق أو جلسة لأن جميع البيانات استمرت عند تسجيل دخول المستخدم مرة أخرى.
تحتوي صفحة تسجيل الدخول حاليًا على عنصر تحكم في تسجيل الدخول ويتم توصيل الكود الموجود خلف الصفحة فقط بمصادقة تسجيل الدخول.
هل يمكن لأي شخص أن يوجهني إلى برنامج تعليمي جيد أو مقال حول كيفية التعامل مع تسجيل الدخول والخروج من مواقع ويب ASP.NET؟
المحلول
Session.Abandon()
http://msdn.microsoft.com/en-us/library/ ms524310.aspx
وهنا هو أكثر قليلا من التفاصيل حول الكائن HttpSessionState
:
http://msdn.microsoft.com/ أون لنا / مكتبة / system.web.sessionstate.httpsessionstate_members.aspx
نصائح أخرى
وأنا نستخدم بعد لمسح الدورة وaspnet_sessionID
واضحة:
HttpContext.Current.Session.Clear();
HttpContext.Current.Session.Abandon();
HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
وأود أن تفضل Session.Abandon()
وSession.Clear()
لا يسبب النهاية لاطلاق النار وسيطلب مزيدا من العميل لا رفع الحدث الدورة ابدأ.
وSession.Abandon()
يدمر الدورة ويتم تشغيل الحدث Session_OnEnd
.
وSession.Clear()
يزيل فقط كل القيم (المحتوى) من كائن. لا يزال session with the same key
وalive
.
وهكذا، إذا كنت تستخدم Session.Abandon()
، تفقد تلك الدورة محددة وسيكون المستخدم الحصول على new session key
. هل يمكن استخدامها على سبيل المثال عندما logs out
المستخدم.
استخدم Session.Clear()
، إذا كنت تريد أن المستخدم المتبقية في الدورة نفسها (إذا كنت لا تريد له أن إعادة تسجيل الدخول على سبيل المثال) وإعادة تعيين كل جلسة محددة بياناته.
والذهاب إلى ملف Global.asax.cs في مشروعك وبإضافة التعليمة البرمجية التالية.
protected void Application_BeginRequest()
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddHours(-1));
Response.Cache.SetNoStore();
}
وعملت بالنسبة لي ..! مرجع الارتباط واضحة على الخروج MVC 4
<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>
تختلف طريقة مسح الجلسة قليلاً بالنسبة لـ .NET core.لا يوجد Abandon()
وظيفة.
ASP.NET Core 1.0 أو الأحدث
//Removes all entries from the current session, if any. The session cookie is not removed.
HttpContext.Session.Clear()
.NET Framework 4.5 أو الأحدث
//Removes all keys and values from the session-state collection.
HttpContext.Current.Session.Clear();
//Cancels the current session.
HttpContext.Current.Session.Abandon();
وSession.Clear ()؛
وسوف session.abandon () لا إزالة ملفات تعريف الارتباط جلسة الهوية من المستعرض. لذلك أي طلبات جديدة بعد هذا سيأخذ نفس ID الدورة. وبالتالي، استخدام Response.Cookies.Add (HttpCookie الجديد ( "ASP.NET_SessionId"، ""))؛ بعد session.abandon ().