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