【发布时间】:2016-10-21 02:50:14
【问题描述】:
我使用 Express 4.13.1 和 Redis 作为会话存储。
app.use(session({
store: new RedisStore,
secret: '...',
resave: false,
saveUninitialized: true
}));
一开始可以,但后来就不行了(升级 node.js 之后)。使用默认存储(内存)可以正常工作,但使用 RedisStore,不会创建会话。这是创建会话的代码:
router.post('/admin/login', (req, res, next) => {
Auth.compare(..., () => {
req.session.authorized = true;
req.session.userId = id;
console.log(req.session); // It prints well. Session is created
res.redirect('/admin/main');
});
});
在那一刻,会话发生了变化:
Session {
cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true },
authorized: true,
userId: '...'}
但在那之后,没有创建会话:
router.get('/admin/main', (req, res, next) => {
console.log(req.session);
...
});
打印会话:
Session {
cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true }
}
我手动使用了 session.save,但是没有用。我错过了什么?
【问题讨论】:
-
@FurkanO 感谢您修正我的话。
标签: node.js session express redis