基本上当我停止服务器并重新启动它时,我会检查我是否已登录,并检查我的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();
});
答案 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'
}));