wake-up-neo.com

So beenden Sie eine Sitzung in ExpressJS

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 beenden oder beenden oder beenden?

74
Stephen

Express 4.x Aktualisierte Antwort

Die Sitzungsabwicklung ist nicht mehr in Express integriert. Diese Antwort bezieht sich auf das Standardsitzungsmodul: https://github.com/expressjs/session

Um die Sitzungsdaten zu löschen, verwenden Sie einfach:

req.session.destroy();

Die Dokumentation ist dazu etwas unbrauchbar. Es sagt:

Zerstört die Sitzung, indem req.session entfernt wird, wird die nächste Anforderung erneut generiert. req.session.destroy(function(err) { // cannot access session here })

Dies bedeutet not, dass die aktuelle Sitzung bei der nächsten Anforderung erneut geladen wird. Dies bedeutet, dass bei der nächsten Anforderung eine leere Sitzung in Ihrem Sitzungsspeicher erstellt wird. (Vermutlich ändert sich die Sitzungs-ID nicht, aber ich habe das nicht getestet.)

88
Brad

Egal, es ist req.session.destroy();

85
Stephen

Die Frage konnte nicht klarstellen, welche Art von Sitzungsspeicher verwendet wurde. Beide Antworten scheinen richtig zu sein.

Für Cookie-basierte Sitzungen:

Von http://expressjs.com/api.html#cookieSession

req.session = null // Deletes the cookie.

Für Redis, etc basierte Sitzungen:

req.session.destroy // Deletes the session in the database.
22
Blueshirts

Von http://expressjs.com/api.html#cookieSession

Um ein Cookie zu löschen, weisen Sie die Sitzung vor dem Antworten einfach auf null

req.session = null
10
stream7

Mit req.session = null; wird die Sitzungsinstanz nicht wirklich gelöscht. Die beste Lösung wäre req.session.destroy();, Dies ist jedoch im Wesentlichen ein Wrapper für delete req.session;.

https://github.com/expressjs/session/blob/master/session/session.js

Session.prototype.destroy = function(fn){
  delete this.req.session;
  this.req.sessionStore.destroy(this.id, fn);
  return this;
};
4
tfmontague

benutzen, 

delete req.session.yoursessionname;
1
Nithin
req.session.destroy(); 

Das Obige funktionierte nicht für mich, also tat ich das. 

req.session.cookie.expires = new Date().getTime();

Durch das Setzen des Ablaufs des Cookies auf die aktuelle Zeit ist die Sitzung von selbst abgelaufen.

0
John Quasar