express 4.0, session express avec un message d'avertissement étrange

105

J'essaie de configurer une application nodejs en utilisant express 4.x. Après avoir trébuché sur les problèmes de suppression du middleware, je l'ai finalement fait fonctionner.

cependant, il y avait quelques messages d'avertissement dans la ligne de code suivante:

app.use(session({secret: '<mysecret>'})

ces avertissements étaient:

Sun, 29 Jun 2014 12:45:10 GMT express-session deprecated pass resave option; default value will change at lib\config\express.js:55:11

Sun, 29 Jun 2014 12:45:10 GMT express-session deprecated pass saveUninitialized option; default value will change at lib\config\express.js:55:11

dans la documentation, les valeurs par défaut pour resave et saveUninitialized sont true.

donc, changer le code pour lire

app.use(session({secret: '<mysecret>', 
                 saveUninitialized: true,
                 resave: true}));

s'est débarrassé des avertissements.

Donc, pour arriver au point de la question:

pourquoi devrais-je devoir transmettre ces valeurs si ce sont les valeurs par défaut, et pourquoi ne dois-je pas transmettre les autres options?

jmls
la source
1
parce que ces valeurs par défaut changeront et, quand elles le feront, vous pouvez éviter les erreurs qui peuvent causer en les transmettant explicitement au middleware
soulcheck
12
J'adore la façon dont ils ne vous disent pas quelles sont les options par défaut
Brade
4
Tant le resaveet saveUnitializedsont booléens qui par défaut à true1.7.2: github.com/expressjs/session
cFS
1
@cfs: Ça devrait l'être saveUninitialized. J'ai copié ce que vous avez posté et j'ai gaspillé 45 minutes en essayant de comprendre si l'avertissement ne disparaît pas. Plus tard, j'ai réalisé qu'il y avait une faute d'orthographe. lol: D
AdityaParab
1
Désolé pour le temps perdu Maverick :) Malheureusement, le commentaire est trop ancien pour que je puisse le modifier, sinon je corrigerais ma faute de frappe: /
cfs

Réponses:

68

Comme le disent les avertissements, les valeurs par défaut changeront donc ils veulent s'assurer qu'en définissant les valeurs explicitement maintenant, vous ne rencontrerez pas de comportement inattendu lorsque les valeurs par défaut changeront (dans un proche avenir).

mscdex
la source
oh, donc les valeurs par défaut de ces deux paramètres vont changer un jour? Cela a beaucoup plus de sens! Merci.
jmls
3
la légende l'a, va encore changer bientôt :)
Qcom
2
De l'avenir ici.
Ça
53

J'ai trouvé le problème utile:

https://github.com/expressjs/session/issues/56

app.use(session({
    secret: cookie_secret,
    resave: true,
    saveUninitialized: true
}));
Ben
la source
1
merci d'avoir répondu à la question sous forme de code ... ne voyez pas assez cela ici
Dave
Agréable. Aussi, je recommanderais de jeter un oeil à la documentation. Dans mon cas, il était préférable de les définir sur false( github.com/expressjs/session#resave , github.com/expressjs/session#saveuninitialized ).
juanra
5

Je n'ai pas assez de représentants pour ajouter ceci en commentaire. J'ai ajouté ceci pour ma valeur par défaut de la réponse de Ben.

secret: process.env.SESSION_SECRET || '<mysecret>',
Chevalier Dragon
la source
2
app.use(session({
  cookieName: 'session',
  secret: 'eg[isfd-8yF9-7w2315df{}+Ijsli;;to8',
  duration: 30 * 60 * 1000,
  activeDuration: 5 * 60 * 1000,
  httpOnly: true,
  secure: true,
  ephemeral: true,
  resave: true,
  saveUninitialized: true
}));
Vijay Prajapati
la source
Fonctionne pour moi, peut-être que la session n'avait besoin que de quelques paramètres supplémentaires. Merci
martinhajny