express 4.0, express-session con messaggio di avviso dispari


105

Sto cercando di impostare un'app nodejs utilizzando express 4.x. Dopo aver inciampato nei problemi di rimozione del middleware, finalmente l'ho fatto funzionare.

tuttavia, c'erano un paio di messaggi di avviso nella seguente riga di codice:

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

questi avvertimenti erano:

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

nella documentazione, i valori predefiniti per resave e saveUninitialized sono veri.

quindi, cambiando il codice da leggere

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

si sono sbarazzati degli avvertimenti.

Quindi, per arrivare al punto della domanda:

perché dovrei passare questi valori se sono i valori predefiniti e perché non devo passare le altre opzioni?


1
perché questi valori predefiniti cambieranno e, quando lo fanno, puoi evitare errori che possono causare passandoli esplicitamente al middleware
soulcheck

12
Adoro il modo in cui NON ti dicono utili quali sono le opzioni predefinite
Brade

4
Sia il resaveche saveUnitializedsono booleani che vengono impostati per impostazione predefinita truein 1.7.2: github.com/expressjs/session
cfs

1
@cfs: dovrebbe essere saveUninitialized. Ho copiato quello che hai pubblicato e ho perso 45 minuti cercando di capire perché l'avvertimento non sparirà. Più tardi ho capito che c'era un errore di ortografia. lol: D
AdityaParab

1
Scusa per il tempo perso Maverick :) Sfortunatamente, il commento è troppo vecchio per essere modificato, altrimenti correggerei il mio errore di battitura: /
cfs

Risposte:


68

Come dicono gli avvertimenti, i valori predefiniti cambieranno in modo che vogliano garantire che, impostando i valori in modo esplicito ora, non si verificheranno comportamenti imprevisti quando i valori predefiniti cambiano (nel prossimo futuro).


oh, quindi i valori predefiniti per questi due parametri cambieranno prima o poi? Ha molto più senso! Grazie.
jmls

3
la leggenda vuole, cambierà ancora presto :)
Qcom

2
Dal futuro qui. Ancora cambierà presto :)
comphonia


5

Non ho abbastanza rappresentante per aggiungere questo come commento. Ho aggiunto questo per il mio valore predefinito della risposta di Ben.

secret: process.env.SESSION_SECRET || '<mysecret>',

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
}));

Per me funziona, forse la sessione necessitava solo di alcune impostazioni extra. Grazie
martinhajny
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.