Wenn der Benutzer auf meiner Website auf die Schaltfläche "Abmelden" klickt, wird die Seite "Logout.aspx" mit Code geladen Session.Clear()
.
Löscht dies in ASP.NET/C# alle Cookies? Oder muss ein anderer Code hinzugefügt werden, um alle Cookies meiner Website zu entfernen?
Session.Abandon
löscht das ASP.NET-Sitzungscookie, jedoch keine manuell festgelegten Cookies, wie hier die Benutzer-ID. UndCookies["whatever"]
ist niemals null; Das Framework erstellt ein Cookie, wenn Sie nach einem nicht vorhandenen Cookie fragen.Cookies["whatever"]
null zurück, wenn das Cookie nicht existiert! Ich weiß, dass dies ein alter Kommentar ist, aber ich möchte nicht, dass andere Leser durch diesen Kommentar irregeführt werden.Expires
NICHT festgelegt ist,DateTime.MinValue
da dies dem Cookie tatsächlich einen Sitzungsablauf verleiht. Dies bedeutet, dass es wartet, bis der Browser / Tab (browserabhängig) geschlossen wird, bevor das Cookie gelöscht wird.Nein, Cookies können nur durch Festlegen des Ablaufdatums für jedes Cookie bereinigt werden.
Im Moment von
Session.Clear()
:Session
Sammlung werden entfernt.Session_End
Ereignis ist nicht geschehen.Wenn Sie diese Methode beim Abmelden verwenden, sollten Sie auch die
Session.Abandon
Methode fürSession_End
Ereignisse verwenden:quelle
if
Leitung funktioniert nicht wirklich. Wenn Sie nach einem Cookie mitCookies["whatever"]
dem Framework fragen, wird ein Cookie erstellt, falls es nicht vorhanden ist.Request
Objekt aufrufen .Response
Objekt erstellt. Interessant :)Response.Cookies["UserSettings"].Expires = DateTime.Now.AddDays(-1)
. Hier fordert der Server den Browser auf, Cookies zu entfernen. Der Browser entfernt es, falls vorhanden.Das benutze ich:
quelle
Leider hat das Einstellen von "Expires" für mich nicht immer funktioniert. Der Cookie war nicht betroffen.
Dieser Code hat bei mir funktioniert:
Wo
"ASP.NET_SessionId"
ist der Name des Cookies? Dadurch wird das Cookie nicht wirklich gelöscht, sondern mit einem leeren Cookie überschrieben, das für mich nah genug war.quelle
Ich möchte nur darauf hinweisen, dass das Sitzungs-ID-Cookie bei Verwendung von Session.Abandon nicht entfernt wird, wie andere sagten.
http://support.microsoft.com/kb/899918
quelle
Sie sollten das Passwort niemals als Cookie speichern. Um ein Cookie zu löschen, müssen Sie es nur ändern und ablaufen lassen. Sie können es nicht wirklich löschen, dh von der Festplatte des Benutzers entfernen.
Hier ist ein Beispiel:
quelle
Es ist jetzt 2018, daher ist in ASP.NET Core eine einfache Funktion integriert. Um ein Cookie zu löschen, versuchen Sie diesen Code:
quelle
Nehmen Sie den Fragentitel des OP als Löschen aller Cookies - "Cookies in Website löschen"
Ich bin irgendwo im Internet auf Code von Dave Domagala gestoßen. Ich habe Dave's bearbeitet, um auch Google Analytics-Cookies zuzulassen. Dabei wurden alle auf der Website gefundenen Cookies durchlaufen und alle gelöscht. (Aus Entwicklersicht ist das Aktualisieren von neuem Code in eine vorhandene Site eine nette Geste, um Probleme mit Benutzern zu vermeiden, die die Site erneut besuchen.)
Ich verwende den folgenden Code zusammen mit dem Lesen der Cookies, dem Speichern aller erforderlichen Daten und dem Zurücksetzen der Cookies, nachdem ich alles mit der folgenden Schleife sauber gewaschen habe.
Der Code:
Ergänzung: Wenn Sie Google Analytics verwenden
Die obige Schleife / Löschung löscht ALLE Cookies für die Website. Wenn Sie also Google Analytics verwenden, ist es wahrscheinlich nützlich, das __utmz-Cookie beizubehalten, da dieses Cookie verfolgt, woher der Besucher kam, welche Suchmaschine verwendet wurde, was Es wurde auf den Link geklickt, welches Schlüsselwort verwendet wurde und wo sie sich beim Zugriff auf Ihre Website auf der Welt befanden.
Um dies beizubehalten, schließen Sie eine einfache if-Anweisung ein, sobald der Cookie-Name bekannt ist:
quelle
Obwohl dies ein alter Thread ist, dachte ich, wenn jemand in Zukunft noch nach einer Lösung sucht.
Das war der Trick für mich.
quelle
Response.Cookies ["UserSettings"]. Expires = DateTime.Now.AddDays (-1)
quelle