экспресс 4.0, экспресс-сеанс с нечетным предупреждающим сообщением

#node.js #express

#node.js #экспресс

Вопрос:

Я пытаюсь выполнить настройку приложения 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 libconfigexpress.js:55:11

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

в документации значения по умолчанию для повторного сохранения и saveUninitialized имеют значение true .

итак, меняем код на чтение

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

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

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

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

Комментарии:

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

2. Мне нравится, как они услужливо НЕ сообщают вам, каковы параметры по умолчанию

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

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

5. Извините за потерянное время, Maverick 🙂 К сожалению, комментарий слишком стар для редактирования, иначе я бы исправил свою опечатку :/

Ответ №1:

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

Комментарии:

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

2. легенда гласит, что это все еще скоро изменится 🙂

3. Из будущего здесь. Все еще скоро изменится 🙂

Ответ №2:

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

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

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

Комментарии:

1. спасибо, что ответили на вопрос в виде кода … не вижу, что здесь достаточно

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

Ответ №3:

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

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

Ответ №4:

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

Комментарии:

1. Работает для меня, возможно, для сеанса нужны были только некоторые дополнительные настройки. Спасибо