Node.js Express.js和connect mongo会话持续时间
我使用带有connect mongo的express.session来存储用户会话。 从现在起,我将cookie maxAge设置为2周,但我想要的是,如果用户在这2周内处于活动状态,会话将延长到另外2周,这样当用户在2周内处于非活动状态时,他的会话将被删除(cookie和mongo中的会话)。 但问题是,当他访问一个页面时,会话在MongoDB中得到更新,但是cookie将在2周后过期,并且不会更改它的“过期”。 这是我的代码:Node.js Express.js和connect mongo会话持续时间,node.js,mongodb,session,cookies,express,Node.js,Mongodb,Session,Cookies,Express,我使用带有connect mongo的express.session来存储用户会话。 从现在起,我将cookie maxAge设置为2周,但我想要的是,如果用户在这2周内处于活动状态,会话将延长到另外2周,这样当用户在2周内处于非活动状态时,他的会话将被删除(cookie和mongo中的会话)。 但问题是,当他访问一个页面时,会话在MongoDB中得到更新,但是cookie将在2周后过期,并且不会更改它的“过期”。 这是我的代码: app.use(express.session({ secr
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和会话上进行更新。请参阅如何实现此目的。除此之外,
maxAge
应该设置为会话将在未来到期的毫秒数,而不是日期(这就是expires
的目的)。因此,请使用以下命令:maxAge:3600000*24*14
将有效期设置为两周。谢谢!我还发现了这个。是的,我总是混淆expires和maxAge,我编辑了问题并发布了答案我想做一件类似的事情,但大约2小时。我是否简单地将maxAge
设置为您原来的问题,然后将这个app.use
放在config?req.session.regenate(回调)不适用于您?