当我启动服务器备份时,req.user未定义

时间:2016-11-12 21:28:28

标签: node.js session cookies

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

这是我创建会话的地方:

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

1 个答案:

答案 0 :(得分: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'
}));