web-dev-qa-db-fra.com

Comment terminer une session dans ExpressJS

Je pense que cela doit être enterré quelque part dans la documentation, mais je ne le trouve pas. 

Comment fermez-vous ou terminez-vous ou tuez-vous une session dans ExpressJS?

74
Stephen

Réponse mise à jour Express 4.x

La gestion de session n'est plus intégrée à Express. Cette réponse fait référence au module de session standard: https://github.com/expressjs/session

Pour effacer les données de la session, utilisez simplement:

req.session.destroy();

La documentation est un peu inutile à ce sujet. Ça dit:

Détruit la session, en supprimant req.session, sera régénéré à la prochaine requête . req.session.destroy(function(err) { // cannot access session here })

Ceci ne signifie pas que la session en cours sera rechargée lors de la prochaine requête. Cela signifie qu'une session vide propre sera créée dans votre magasin de session à la prochaine demande. (Je suppose que l'ID de session ne change pas, mais je n'ai pas testé cela.)

88
Brad

Peu importe, c'est req.session.destroy();

85
Stephen

La question n'a pas clarifié le type de magasin de session utilisé. Les deux réponses semblent être correctes.

Pour les sessions basées sur les cookies:

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

req.session = null // Deletes the cookie.

Pour les sessions basées sur Redis, etc.:

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

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

Pour effacer un cookie, assignez simplement la session à null avant de répondre:

req.session = null
10
stream7

L'utilisation de req.session = null; ne supprimera pas réellement l'instance de session. La solution la plus appropriée serait req.session.destroy();, Mais il s’agit essentiellement d’un wrapper pour 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

utilisation, 

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

Ce qui précède n'a pas fonctionné pour moi, alors je l'ai fait. 

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

En définissant l’expiration du cookie sur l’heure actuelle, la session a expiré toute seule.

0
John Quasar