Express 4.0, Express-Sitzung mit ungerader Warnmeldung

105

Ich versuche, eine NodeJS-App mit Express 4.x einzurichten. Nachdem ich über die Probleme beim Entfernen von Middleware gestolpert war, funktionierte es endlich.

In der folgenden Codezeile wurden jedoch einige Warnmeldungen angezeigt:

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

Diese Warnungen waren:

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

In der Dokumentation sind die Standardwerte für resave und saveUninitialized true.

Ändern Sie also den zu lesenden Code

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

habe die Warnungen losgeworden.

Um auf den Punkt der Frage zu kommen:

Warum sollte ich diese Werte übergeben müssen, wenn es sich um die Standardwerte handelt, und warum muss ich die anderen Optionen nicht übergeben?

jmls
quelle
1
da sich diese Standardwerte ändern und wenn dies der
Fall ist
12
Ich liebe es, wie hilfreich sie Ihnen NICHT sagen, was die Standardoptionen sind
Brade
4
Sowohl die resaveals auch saveUnitializedsind Boolesche Werte, die standardmäßig truein 1.7.2 verwendet werden: github.com/expressjs/session
cfs
1
@cfs: Es sollte sein saveUninitialized. Ich habe kopiert, was Sie gepostet haben, und 45 Minuten verschwendet, um herauszufinden, ob die Warnung nicht verschwindet. Später stellte ich fest, dass ein Rechtschreibfehler aufgetreten war. lol: D
AdityaParab
1
Entschuldigung für die verschwendete Zeit Maverick :) Leider ist der Kommentar zu alt für mich zum Bearbeiten, sonst würde ich meinen Tippfehler beheben: /
cfs

Antworten:

68

Wie in den Warnungen angegeben, ändern sich die Standardwerte, sodass sichergestellt werden soll, dass durch explizites Festlegen der Werte kein unerwartetes Verhalten auftritt, wenn sich die Standardeinstellungen ändern (in naher Zukunft).

mscdex
quelle
Oh, also werden sich die Standardwerte für diese beiden Parameter irgendwann ändern? Das macht viel mehr Sinn! Vielen Dank.
jmls
3
Die Legende hat es, wird sich bald ändern :)
Qcom
2
Aus der Zukunft hier.
Wird
53

Ich fand das Problem nützlich:

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

app.use(session({
    secret: cookie_secret,
    resave: true,
    saveUninitialized: true
}));
Ben
quelle
1
Vielen Dank für die Beantwortung der Frage in Form von Code ... sehen Sie das hier nicht genug
Dave
Nett. Außerdem würde ich empfehlen, einen Blick auf die Dokumente zu werfen. In meinem Fall war es besser, sie auf false( github.com/expressjs/session#resave , github.com/expressjs/session#saveuninitialized ) zu setzen.
Juanra
5

Ich habe nicht genug Repräsentanten, um dies als Kommentar hinzuzufügen. Ich habe dies für meinen Standardwert von Bens Antwort hinzugefügt.

secret: process.env.SESSION_SECRET || '<mysecret>',
Drachenritter
quelle
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
quelle
Funktioniert für mich, vielleicht brauchte die Sitzung nur ein paar zusätzliche Einstellungen. Vielen Dank
Martinhajny