экспресс 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.