我使用express.session和connect-mongo来存储用户会话。
我将 cookie maxAge 设置为从现在起的 2 周,但我想要的是,如果用户在这 2 周内处于活动状态,则会话会延长到另外 2 周,这样当他不活动 2 周后,他的会话就会被删除(无论是cookie 和 mongo 中的会话)。
但问题是,当他访问页面时,会话会在 MongoDB 中更新,但 cookie 将在 2 周后过期,并且不会改变它的“过期”状态。
这是我的代码:
app.use(express.session({
secret: 'superSecretKey',
cookie: {maxAge: 3600000*24*14},
store: new MongoStore({
mongoose_connection: mongoose.connections[0],
db: 'myDb'
})
}));
我怎样才能实现我想要的?
谢谢!
我终于解决了这个问题,你必须使用中间件来更新会话中的任何数据,以便重新发送cookie,就像这样:
app.use(function(req, res, next) {
req.session._garbage = Date();
req.session.touch();
next();
});
这样,maxAge 将在每次向应用程序发出请求时更新 cookie 和会话。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)