Sowohl Session.Clear () als auch Session.Abandon () entfernen Sitzungsvariablen. Nach meinem Verständnis beendet Abandon () die aktuelle Sitzung und bewirkt, dass eine neue Sitzung erstellt wird, wodurch die Ereignisse End und Start ausgelöst werden.
In den meisten Fällen ist es vorzuziehen, Abandon () aufzurufen, z. B. um einen Benutzer abzumelden. Gibt es Szenarien, in denen ich stattdessen Clear () verwenden würde? Gibt es einen großen Leistungsunterschied?
quelle
Session.Abandon()
als "Abmelden" in einer internen App mit Windows-Authentifizierung verwendet - Benutzer mussten sich nicht erneut authentifizieren (Chrome, FF), aber die Sitzung wurde beendet und eine neue ausgegeben, die meinen Anforderungen entsprachNur die Verwendung von Session.Clear (), wenn sich ein Benutzer abmeldet, kann eine Sicherheitslücke darstellen. Da die Sitzung für den Webserver noch gültig ist. Es ist dann eine ziemlich triviale Angelegenheit, zu schnüffeln, die Sitzungs-ID zu ermitteln und diese Sitzung zu entführen.
Aus diesem Grund ist es beim Abmelden eines Benutzers sicherer und sinnvoller, Session.Abandon () zu verwenden, damit die Sitzung zerstört und eine neue Sitzung erstellt wird (obwohl die Abmeldeseite der Benutzeroberfläche Teil der neuen Sitzung wäre). Die neue Sitzung würde keine Benutzerdetails enthalten, und die Entführung der neuen Sitzung wäre gleichbedeutend mit einer neuen Sitzung, daher wäre sie stumm.
quelle
Session.Abandon
zerstört die Sitzung wie oben angegeben, daher sollten Sie diese verwenden, wenn Sie jemanden abmelden. Ich denke, eine gute VerwendungSession.Clear
wäre für einen Einkaufskorb auf einer E-Commerce-Website. Auf diese Weise wird der Warenkorb gelöscht, ohne den Benutzer abzumelden.quelle
Session.Abandon
nur einen bestimmten Einkaufskorb lösche?Ich hatte dieses Problem und versuchte beides, musste mich aber damit zufrieden geben, Mist wie "pageEditState" zu entfernen, aber keine Benutzerinformationen zu entfernen, damit ich ihn nicht noch einmal nachschlagen muss.
quelle