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

в документації значення за замовчуванням для збереження та збереженняUninitialized є істинними.

так, змінюючи код на читання

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

позбувся попереджень.

Отже, щоб перейти до суті питання:

чому я повинен передавати ці значення, якщо вони є типовими значеннями, і чому я не повинен передавати інші параметри?


1
тому що ці значення за замовчуванням зміняться, і, коли вони будуть, ви можете уникнути помилок, які можуть викликати, явно передавши їх до середнього програмного забезпечення
soulcheck

12
Мені подобається, як вони корисно НЕ розповідають, які варіанти за замовчуванням
Brade

4
Як resaveі saveUnitializedє булеві які по замовчуванням trueв 1.7.2: github.com/expressjs/session
CFS

1
@cfs: Має бути saveUninitialized. Я скопіював те, що ви розмістили, і витратив 45 хвилин, намагаючись з'ясувати, наскільки попередження не зникає. Пізніше я зрозумів, що є орфографічна помилка. lol: D
AdityaParab

1
Вибачте за витрачений час Maverick :) На жаль, коментар для мене занадто старий для редагування, інакше я б виправив помилку: /
cfs

Відповіді:


68

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


О, значить, значення за замовчуванням для цих двох параметрів колись зміниться? Це має набагато більше сенсу! Дякую.
jmls

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

2
З майбутнього тут. Ще невдовзі зміниться :)
comphonia

53

Я вважаю проблему корисною:

https://github.com/expressjs/session/isissue/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
}));

Для мене працює, можливо, сеанс потребував лише додаткових налаштувань. Дякую
мартінхайний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.