web-dev-qa-db-fra.com

Définition de l'heure d'expiration de la session Node.js Express dans SessionStore à la place du cookie

Tout ce que je peux trouver sur Express Session s expiration est sur la configuration du cookie.

session.cookie.expires = null; // Browser session cookie  
session.cookie.expires = 7 * 24 * 3600 * 1000; // Week long cookie

Mais la date d'expiration des cookies n'est pas "sécurisée" avec votre secret, car ce ne sont que des paramètres de cookies gérés par votre navigateur.

Comment puis-je définir la date d'expiration de la session dans le magasin de sessions? Parce que théoriquement, quand quelqu'un utilise votre ordinateur, il peut `` fixer '' le temps d'expiration d'un cookie expiré et continuer la session, si la session côté serveur n'est pas également expirée en même temps que le cookie.

Je ne trouve rien sur la façon dont cela fonctionne ou sur la façon de régler/modifier cela.

13
Redsandro

Avec le middleware de session, seul l'ID de session crypté est stocké dans le cookie côté client. La date d'expiration est stockée sous la forme req.session.cookie.expires dans le magasin côté serveur. Nous pouvons donc ajouter un milieu personnalisé pour vérifier si la session en cours a expiré.

// ...
app.use(express.cookieParser());
app.use(express.session({secret:'yoursecret', cookie:{maxAge:6000}}));

app.use(function(req, res, next) {
  // if now() is after `req.session.cookie.expires`
  //   regenerate the session
  next();
});

// ...
23
bnuhero