Beispielcode zum Löschen einer Sitzung oder eines Cookies beim sicheren Verlassen von Asp.net

高洛峰
Freigeben: 2016-12-10 09:13:26
Original
1732 Leute haben es durchsucht

Übersicht:

Klicken Sie, um sich von der Website abzumelden. Wenn Sie nur zur Anmelde-/Ausstiegsseite weitergeleitet werden, geben Sie nach der Anmeldung die Adresse einer Seite ein, z. B. der Startseite. Sie werden feststellen, dass Sie sich nicht anmelden müssen, um darauf zuzugreifen. Dieser sogenannte Exit ist nicht sicher.

Wie kommt man also sicher raus?

Das heißt, die entsprechende Sitzung oder das entsprechende Cookie zu löschen, nachdem Sie zum Beenden geklickt haben.

Code zum Löschen der Sitzung:

Session.Clear();
Session.Abandon();
Nach dem Login kopieren

Korrekter Code zum Löschen des Cookies (vorausgesetzt, der Cookie-Name ist UserInfo):

if (Request.Cookies["UserInfo"] != null)
{
Response.Cookies["UserInfo"].Expires = DateTime.Now.AddDays(-1);
}
Nach dem Login kopieren

Wenn Sie alle Cookies löschen müssen, gehen Sie zu:

for (int i = 0; i <Response.Cookies.Count; i++)
{
Response.Cookies[i].Expires = DateTime.Now.AddDays(-1);
}
Nach dem Login kopieren

Cookie löschen Fehlercode (vorausgesetzt, der Cookie-Name lautet „UserInfo“):

if (Request.Cookies["UserInfo"] != null)
{
Response.Cookies.Remove("UserInfo");
}
Nach dem Login kopieren

Sie werden feststellen, dass das Cookie nach dieser Verarbeitung noch vorhanden ist. Warum kann es nicht? gelöscht werden? Werfen wir einen Blick auf den Quellcode der HttpCookieCollection-Implementierung von .NET:

public void Remove(string name)
{
if (this._response != null)
{
this._response.BeforeCookieCollectionChange();
}
this.RemoveCookie(name);
if (this._response != null)
{
this._response.OnCookieCollectionChange();
}
}
Nach dem Login kopieren

Dieser Vorgang löscht Cookies in der HttpCookieCollection-Sammlung, wenn der Server die Daten an den Server überträgt client Wenn es an den Server gesendet wird, enthält es keine Informationen über das auf dem Server gelöschte Cookie und der Browser nimmt keine Änderungen daran vor (die Remove-Methode verhindert lediglich, dass der Server das gelöschte Cookie an den Client sendet . Bei diesem Cookie spielt es keine Rolle, ob es auf dem Client-Rechner verbleibt oder nicht. Daher gibt es eine Situation, in der das Cookie nicht gelöscht werden kann.

Da Response.Cookies.Remove nicht den von uns benötigten Effekt erzielen kann, warum behält Microsoft es trotzdem bei? Da CookieCollection die ICollection-Schnittstelle implementiert, ist romove eine Methode, die implementiert werden muss, obwohl sie wenig praktischen Wert hat. Die Sammlung romove sollte auch auf diese Weise implementiert werden, aber als Microsoft MSDN schrieb, war die Beschreibung zu unklar, was uns viel Ärger bereitete.

Im Folgenden finden Sie eine Zusammenfassung verschiedener Möglichkeiten zum sicheren Beenden:

1). Verwenden Sie Serversteuerelemente wie Linkbutton und Button zum Beenden.

Diese Methode ist am besten: direkt Schreiben Sie einfach den Code, um die Sitzung oder das Cookie im entsprechenden Fall der Serversteuerung zu löschen.

2). Verwenden Sie HTML-Tags wie Logout zum Beenden.

Für das spezielle Tag kann es wie folgt implementiert werden Dies: < ;a href="logout.aspx">Logout Schreiben Sie einfach den Code zum Löschen der Sitzung oder des Cookies im Page_Load-Ereignis von logout.aspx.

Für HTML-Tags wie können Sie Js-Ajax oder jQuery-Ajax im entsprechenden Client-Ereignis des HTML-Tags verwenden, um das Löschen im allgemeinen Handler (.ashx) zu schreiben ) Sitzungs- oder Cookie-Code reicht aus.

Für HTML-Tags wie können Sie auch Folgendes tun: Fügen Sie der aktuellen Seite ein Serversteuerelement wie Button hinzu, fügen Sie es in ein Div ein und blenden Sie es aus (Hinweis : Ausblenden ist nicht sichtbar und kann nicht über das Serverattribut Visible=False erreicht werden, was nur durch Festlegen von display:none; des div erreicht werden kann. Schreiben Sie dann den Code zum Löschen der Sitzung oder des Cookies im Serverereignis Cilck; Rufen Sie es mit Js oder jQuery im entsprechenden Client-Ereignis der HTML-Markierung auf. Das Click-Ereignis des Button-Steuerelements ist ausreichend (der Button wird ausgeblendet, indem die Servereigenschaft Visible=False gesetzt wird, und das Click-Ereignis des Button-Steuerelements wird von JS oder aufgerufen jQuery wird ungültig sein).


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage