req.Sitzung im express-session nicht beibehalten
Ich habe den folgenden code:
var express = require('express');
var cookieParser = require('cookie-parser');
var http = require('http')
var app = express();
app.use(cookieParser());
var session = require('express-session');
app.use(session({
resave: false,
saveUninitialized: true,
secret: 'sdlfjljrowuroweu',
cookie: { secure: true }
}));
app.get('/test', test);
function test(req, res) {
var sess = req.session;
console.log('before', sess);
if (sess.views) {
sess.views++
req.session.save();
res.setHeader('Content-Type', 'text/html')
res.write('<p>views: ' + sess.views + '</p>')
res.write('<p>expires in: ' + (sess.cookie.maxAge / 1000) + 's</p>')
res.end();
} else {
sess.views = 1;
req.session.save();
res.end('welcome to the session demo. refresh!')
}
console.log('after', sess);
return;
}
var server = http.createServer(app);
server.listen(8181);
Und die Seite neu zu laden, habe ich einfach immer die Anzahl 0-Nachricht.
Überprüfung der console, das ist die Ausgabe jedes mal:
before { cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: true } }
after { cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: true },
views: 1 }
So scheint es nicht zu sein, sparen Sie bei allen
- Verwenden Sie eine sichere Verbindung? aka
https://
ich vermute, Sie sind nicht, aber Sie haben diesecure
- flag auf true in Ihremexpress.session(...)
, was bedeutet, dass Sie nie in der Lage sein, um den Zugriff auf die cookie (damit sessions funktionieren nicht richtig).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern
cookie: { secure: true }
zucookie: { secure: false }
mit sichere - flag bedeutet, dass der cookie gesetzt wird auf Https nur.
cookie: { secure: app.get('env') === 'production' }
so, dass die SSL ist nur erforderlich, wenn die app live geht.