J'ai l'impression que cela doit être enterré quelque part dans la documentation, mais je ne peux pas le trouver.
Comment fermer ou terminer ou tuer (peu importe) une session dans ExpressJS?
La gestion des sessions 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 session, utilisez simplement:
req.session.destroy();
La documentation est un peu inutile à ce sujet. Ça dit:
Détruit la session, supprimant req.session, sera re-généré la prochaine demande.
req.session.destroy(function(err) { // cannot access session here })
Cela ne signifie pas que la session en cours sera rechargée à la prochaine demande. Cela signifie qu'une session vide propre sera créée dans votre magasin de sessions à la prochaine demande. (Vraisemblablement, l'ID de session ne change pas, mais je ne l'ai pas testé.)
Peu importe, c'est
req.session.destroy();
la source
req.session.destroy();
comme l'a fait acidghost.La question ne clarifiait pas le type de magasin de sessions utilisé. Les deux réponses semblent correctes.
Pour les sessions basées sur les cookies:
Depuis http://expressjs.com/api.html#cookieSession
Pour les sessions basées sur Redis, etc.:
la source
Depuis http://expressjs.com/api.html#cookieSession
Pour effacer un cookie, attribuez simplement la valeur null à la session avant de répondre:
la source
utilisation,
la source
L'utilisation de
req.session = null;
, ne supprimera pas réellement l'instance de session. La solution la plus appropriée seraitreq.session.destroy();
, mais il s'agit essentiellement d'un wrapper pourdelete req.session;
.https://github.com/expressjs/session/blob/master/session/session.js
la source
Session.destroy (rappel)
↓ Voie sécurisée ↓ ✅
↓ Manière non sécurisée ↓ ❌
la source
Ce qui précède n'a pas fonctionné pour moi, alors je l'ai fait.
En définissant l'expiration du cookie sur l'heure actuelle, la session a expiré d'elle-même.
la source
Comme mentionné à plusieurs endroits, je ne parviens pas non plus à faire fonctionner correctement la fonction req.session.destroy ().
C'est mon travail ... semble faire l'affaire, et permet toujours d'utiliser req.flash
Si vous supprimez ou définissez req.session = null; , il semble que vous ne puissiez pas utiliser req.flash
la source