2016-11-12 115 views
0

基本上,当我停止服务器并启动备份时,我检查是否已登录,并检查是否有附加到我的Cookie会话的用户标识。它总是返回false。出于某种原因,当我关闭我的服务器时,用户名也附加了我的cookie会话似乎被删除。有没有办法阻止它被删除?我希望能够关闭服务器,然后再打开它,并让connect.sid cookie包含一个user.id,允许我在登录时自动重定向。当我启动服务器备份时,req.user未定义

这里是我创建会话的位置:

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

这里是我附上一个用户ID会话:

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('/'); 
}); 

这里就是我检查,如果用户登录或不:

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

你必须坚持你的会话存储到磁盘,您可以通过使用一些特定的服务器,如Redis的为实现这一目标@Tuan在下面回答。 Express在内存中使用会话,如果您关闭服务器,则会丢失所有数据。 – bpinhosilva

回答

1

默认情况下express/session使用MemoryStore。你可能想看看不同session store

下面这一个是例如与connect-redis

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

app.use(session({ 
    store: new RedisStore(options), 
    secret: 'keyboard cat' 
})); 
相关问题