Ich habe das Gefühl, dass dies irgendwo in der Dokumentation vergraben sein muss, aber ich kann es nicht finden.
Wie können Sie eine Sitzung in ExpressJS schließen, beenden oder beenden (was auch immer)?
Die Sitzungsbehandlung ist nicht mehr in Express integriert. Diese Antwort bezieht sich auf das Standard-Sitzungsmodul: https://github.com/expressjs/session
Verwenden Sie zum Löschen der Sitzungsdaten einfach:
req.session.destroy();
Die Dokumentation ist dazu etwas nutzlos. Es sagt:
Zerstört die Sitzung, entfernt die Anforderung und wird bei der nächsten Anforderung neu generiert.
req.session.destroy(function(err) { // cannot access session here })
Dies bedeutet nicht , dass die aktuelle Sitzung bei der nächsten Anforderung erneut geladen wird. Dies bedeutet, dass bei der nächsten Anforderung eine saubere leere Sitzung in Ihrem Sitzungsspeicher erstellt wird. (Vermutlich ändert sich die Sitzungs-ID nicht, aber das habe ich nicht getestet.)
Egal, es ist
req.session.destroy();
quelle
req.session.destroy();
als Acidghost verwendet.Die Frage stellte nicht klar, welche Art von Sitzungsspeicher verwendet wurde. Beide Antworten scheinen richtig zu sein.
Für Cookie-basierte Sitzungen:
Von http://expressjs.com/api.html#cookieSession
Für Redis usw. -basierte Sitzungen:
quelle
Von http://expressjs.com/api.html#cookieSession
Um ein Cookie zu löschen, weisen Sie die Sitzung einfach null zu, bevor Sie antworten:
quelle
verwenden,
quelle
Mit
req.session = null;
wird die Sitzungsinstanz nicht gelöscht. Die am besten geeignete Lösung wärereq.session.destroy();
, aber dies ist im Wesentlichen ein Wrapper fürdelete req.session;
.https://github.com/expressjs/session/blob/master/session/session.js
quelle
Session.destroy (Rückruf)
↓ Sicherer Weg ↓ ✅
↓ Unsicherer Weg ↓ ❌
quelle
Das obige hat bei mir nicht funktioniert, also habe ich das gemacht.
Durch Setzen des Ablaufs des Cookies auf die aktuelle Zeit lief die Sitzung von selbst ab.
quelle
Wie an mehreren Stellen erwähnt, kann ich auch die Funktion req.session.destroy () nicht ordnungsgemäß ausführen.
Dies ist meine Arbeit. Scheint den Trick zu tun und erlaubt trotzdem die Verwendung von req.flash
Wenn Sie req.session = null löschen oder setzen ; , anscheinend können Sie req.flash nicht verwenden
quelle