express 4.0, sesja ekspresowa z dziwnym komunikatem ostrzegawczym

105

Próbuję skonfigurować aplikację nodejs przy użyciu express 4.x. Po natknięciu się na problemy z usuwaniem oprogramowania pośredniego w końcu udało mi się to uruchomić.

jednak w następującym wierszu kodu było kilka komunikatów ostrzegawczych:

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

te ostrzeżenia były:

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

w dokumentacji domyślne wartości resave i saveUninitialized to true.

więc zmiana kodu do odczytania

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

pozbył się ostrzeżeń.

A więc, aby przejść do sedna pytania:

dlaczego powinienem przekazywać te wartości, jeśli są one wartościami domyślnymi, i dlaczego nie muszę przekazywać innych opcji?

jmls
źródło
1
ponieważ te wartości domyślne ulegną zmianie, a gdy to nastąpi, można uniknąć błędów, które mogą powodować, przekazując je bezpośrednio do oprogramowania pośredniego
soulcheck
12
Uwielbiam to, jak pomocnie NIE mówią ci, jakie są domyślne opcje
Brade,
4
Oba resavei saveUnitializedsą wartościami logicznymi, które domyślnie są truew wersji 1.7.2: github.com/expressjs/session
cfs,
1
@cfs: Tak powinno być saveUninitialized. Skopiowałem to, co opublikowałeś i zmarnowałem 45 minut, próbując dowiedzieć się, dlaczego ostrzeżenie nie zniknie. Później zdałem sobie sprawę, że wystąpił błąd w pisowni. lol: D
AdityaParab
1
Przepraszam za stracony czas Maverick :) Niestety, komentarz jest zbyt stary, abym mógł go edytować, w przeciwnym razie
poprawiłbym

Odpowiedzi:

68

Jak mówią ostrzeżenia, wartości domyślne zmienią się, więc chcą mieć pewność, że ustawiając je teraz jawnie, nie napotkasz nieoczekiwanego zachowania, gdy wartości domyślne się zmienią (w najbliższej przyszłości).

mscdex
źródło
och, więc domyślne wartości tych dwóch parametrów kiedyś się zmienią? To ma dużo więcej sensu! dzięki.
jmls
3
legenda to głosi, ale wkrótce się to zmieni :)
Qcom
2
Z przyszłości tutaj. Wkrótce to się jeszcze zmieni :)
comphonia
53

Problem okazał się przydatny:

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

app.use(session({
    secret: cookie_secret,
    resave: true,
    saveUninitialized: true
}));
Ben
źródło
1
dzięki za odpowiedź na pytanie w formie kodu ... nie widzę tu wystarczająco dużo
Dave
Miły. Również poleciłbym przyjrzeć się dokumentom. W moim przypadku lepiej ustawić je na false( github.com/expressjs/session#resave , github.com/expressjs/session#saveuninitialized ).
juanra
5

Nie mam wystarczającej liczby przedstawicieli, aby dodać to jako komentarz. Dodałem to dla mojej domyślnej wartości odpowiedzi Bena.

secret: process.env.SESSION_SECRET || '<mysecret>',
Smoczy rycerz
źródło
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
}));
Vijay Prajapati
źródło
U mnie działa, może sesja wymagała tylko dodatkowych ustawień. Dzięki
martinhajny