2016-11-12 2 views
0

Wenn ich meinen Server stoppe und die Sicherung starte, überprüfe ich, ob ich eingeloggt bin und überprüfe, ob eine Benutzer-ID an meine Cookie-Session angehängt ist. Es gibt immer falsch zurück. Aus irgendeinem Grund, wenn ich meinen Server ausschalte, scheint die Benutzer-ID, die zu meiner Cookie-Sitzung hinzugefügt wurde, gelöscht zu werden. Gibt es eine Möglichkeit zu verhindern, dass es gelöscht wird? Ich möchte in der Lage sein, meinen Server auszuschalten und dann wieder einzuschalten, damit der connect.sid-Cookie eine user.id enthält, die mich automatisch als angemeldet umleiten lässt.req.user ist undefiniert, wenn ich meine Server-Sicherung starte

Hier ist, wo ich meine Sitzung erstellen:

app.use(session({ 
    secret: 'secret', 
    saveUninitialized: true, 
    cookie: { expires: new Date(253402300000000) } 
})); 

Hier ist, wo ich eine Benutzer-ID der Sitzung anhängen:

app.post('/signin', passport.authenticate('local', { 
    failureRedirect: '/', 
    failureFlash: true 
}), 

function (req, res) { 
    // If this function gets called, authentication was successful. 
    // `req.user` contains the authenticated user. 
    res.redirect('/'); 
}); 

Hier ist, wo ich überprüfen, ob der Benutzer angemeldet ist oder nicht:

app.get('/', function (req, res, next) { 
    var username; 
    if (req.user || req.isAuthenticated()) { 
     username = req.user.username 
    } else { 
     username = ''; 
    } 
    res.render('StockPage/HomePage', { user: username }); 
    next(); 
}); 
+0

Sie müssen Ihre Session-Speicher auf der Festplatte bestehen, können Sie erreichen, dass durch einige spezifische Server wie Redis Verwendung als antwortete direkt unter @Tuan. Express verwendet die Sitzung im Speicher. Wenn Sie den Server ausschalten, gehen alle Daten verloren. – bpinhosilva

Antwort

1

Standardmäßig express/session verwenden Sie MemoryStore. Sie können einen Blick auf einen anderen session store

Dieses unten nehmen wollen, ist beispielsweise mit connect-redis

var session = require('express-session'); 
var RedisStore = require('connect-redis')(session); 

app.use(session({ 
    store: new RedisStore(options), 
    secret: 'keyboard cat' 
})); 
Verwandte Themen