سؤال

أقوم بإعادة توجيه المستخدم إلى صفحة تسجيل الدخول عندما ينقر المستخدم على تسجيل الخروج، لكنني لا أعتقد أنه يمسح أي تطبيق أو جلسة لأن جميع البيانات استمرت عند تسجيل دخول المستخدم مرة أخرى.

تحتوي صفحة تسجيل الدخول حاليًا على عنصر تحكم في تسجيل الدخول ويتم توصيل الكود الموجود خلف الصفحة فقط بمصادقة تسجيل الدخول.

هل يمكن لأي شخص أن يوجهني إلى برنامج تعليمي جيد أو مقال حول كيفية التعامل مع تسجيل الدخول والخروج من مواقع ويب ASP.NET؟

هل كانت مفيدة؟

المحلول

نصائح أخرى

وأنا نستخدم بعد لمسح الدورة و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()

انظر مرجع API هنا

.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();

انظر مرجع API هنا

وSession.Clear ()؛

وسوف session.abandon () لا إزالة ملفات تعريف الارتباط جلسة الهوية من المستعرض. لذلك أي طلبات جديدة بعد هذا سيأخذ نفس ID الدورة. وبالتالي، استخدام Response.Cookies.Add (HttpCookie الجديد ( "ASP.NET_SessionId"، ""))؛ بعد session.abandon ().

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top