экспресс 4.0, экспресс-сессия со странным предупреждением


105

Я пытаюсь настроить приложение nodejs с помощью express 4.x. После того, как я наткнулся на проблемы с удалением промежуточного программного обеспечения, я, наконец, заставил его работать.

однако в следующей строке кода было несколько предупреждающих сообщений:

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

эти предупреждения были:

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

в документации значения по умолчанию для resave и saveUninitialized истинны.

Итак, изменив код на чтение

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

избавился от предупреждений.

Итак, чтобы перейти к сути вопроса:

почему я должен передавать эти значения, если они являются значениями по умолчанию, и почему я не должен передавать другие параметры?


1
потому что эти значения по умолчанию изменятся, и, когда они это сделают, вы можете избежать ошибок, которые могут быть
вызваны

12
Мне нравится, как они услужливо НЕ говорят вам, какие параметры по умолчанию
Брейд

4
Оба resaveи saveUnitializedявляются логическими значениями, которые по умолчанию установлены trueв 1.7.2: github.com/expressjs/session
cfs

1
@cfs: Так и должно быть saveUninitialized. Я скопировал то, что вы опубликовали, и потратил 45 минут, пытаясь выяснить, почему предупреждение не исчезнет. Позже я понял, что это была орфографическая ошибка. lol: D
AdityaParab 03 янв.15

1
Извините за потраченное время, Maverick :) К сожалению, комментарий слишком старый, чтобы я мог его редактировать, иначе я бы
исправил

Ответы:


68

Как говорится в предупреждениях, значения по умолчанию изменятся, поэтому они хотят гарантировать, что, явно задав значения сейчас, вы не столкнетесь с неожиданным поведением, когда значения по умолчанию изменятся (в ближайшем будущем).


о, так что значения по умолчанию для этих двух параметров когда-нибудь изменятся? В этом гораздо больше смысла! Спасибо.
jmls

3
легенда гласит, скоро все еще изменится :)
Qcom

2
Из будущего здесь. Все еще скоро изменится :)
comphonia

53

Я нашел проблему полезной:

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

app.use(session({
    secret: cookie_secret,
    resave: true,
    saveUninitialized: true
}));

1
спасибо за ответ на вопрос в виде кода ... не вижу здесь достаточно
Дэйв

Ницца. Также я бы порекомендовал взглянуть на документы. В моем случае было лучше установить их на false( github.com/expressjs/session#resave , github.com/expressjs/session#saveuninitialized ).
juanra

5

У меня недостаточно комментариев, чтобы добавить это в качестве комментария. Я добавил это для своего значения ответа Бена по умолчанию.

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

У меня работает, возможно, для сеанса нужны просто дополнительные настройки. Спасибо
martinhajny
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.