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?
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.)
Peu importe, c'est req.session.destroy();
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.
De http://expressjs.com/api.html#cookieSession
Pour effacer un cookie, assignez simplement la session à null avant de répondre:
req.session = null
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;
};
utilisation,
delete req.session.yoursessionname;
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.