Express 4.0, sessão expressa com mensagem de aviso estranha

105

Estou tentando trabalhar através da configuração de um aplicativo nodejs usando express 4.x. Depois de tropeçar nos problemas de remoção de middleware, finalmente consegui fazer funcionar.

no entanto, havia algumas mensagens de aviso na seguinte linha de código:

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

esses avisos foram:

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

na documentação, os valores padrão para resave e saveUninitialized são verdadeiros.

então, mudando o código para ler

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

livrou-se dos avisos.

Então, para chegar ao ponto da questão:

por que devo passar esses valores se eles são os valores padrão e por que não devo passar as outras opções?

jmls
fonte
1
porque esses valores padrão mudarão e, quando isso acontecer, você pode evitar erros que podem causar, passando-os explicitamente para o middleware
soulcheck
12
Eu amo como eles prestativamente NÃO dizem quais são as opções padrão
Brade
4
Ambos os resavee saveUnitializedsão booleanos cujo padrão é true1.7.2: github.com/expressjs/session
cfs
1
@cfs: Deve ser saveUninitialized. Copiei o que você postou e desperdicei 45 minutos tentando descobrir se o aviso não está desaparecendo. Mais tarde, percebi que havia um erro de grafia. lol: D
AdityaParab
1
Desculpe pelo tempo perdido Maverick :) Infelizmente, o comentário é muito antigo para eu editar, caso contrário, eu corrigiria meu erro de digitação: /
cfs

Respostas:

68

Como dizem os avisos, os valores padrão mudarão de forma que eles desejam garantir que, ao definir os valores explicitamente agora, você não terá um comportamento inesperado quando os padrões mudarem (em um futuro próximo).

mscdex
fonte
oh, então os valores padrão para esses dois parâmetros vão mudar algum dia? Isso faz muito mais sentido! obrigado.
jmls
3
diz a lenda, ainda vai mudar em breve :)
Qcom
2
Do futuro aqui. Ainda vai mudar em breve :)
comphonia
53

Achei o problema útil:

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

app.use(session({
    secret: cookie_secret,
    resave: true,
    saveUninitialized: true
}));
Ben
fonte
1
obrigado por responder a pergunta na forma de código ... não vejo isso o suficiente por aqui
Dave
Agradável. Além disso, eu recomendaria dar uma olhada na documentação. No meu caso, era melhor defini-los como false( github.com/expressjs/session#resave , github.com/expressjs/session#saveuninitialized ).
Juanra de
5

Não tenho representantes suficientes para adicionar isso como comentário. Eu adicionei isso para o meu valor padrão da resposta de Ben.

secret: process.env.SESSION_SECRET || '<mysecret>',
Cavaleiro Dragão
fonte
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
fonte
Funciona para mim, talvez a sessão precise de apenas algumas configurações extras. Obrigado
martinhajny