3

在节点中,我有一个 https 服务器,并且我使用具有 maxage 值的会话,这是代码:

app.use(express.cookieParser());
app.use(express.session({ 
  secret: 'secret stuff',
  store: sessionStore,
  cookie: { 
    secure: true,
    maxAge: 60 * 1000 //1 minute
  } 
}));

我想要一个功能,例如如果用户在 maxAge 期间(在这种情况下为 1 分钟)访问该站点,cookie 计时器将重新开始,并且他/她还有 1 分钟的时间来释放它的会话 ID。

我看到它req.session._expires已更新(由会话中间件),但 cookie 保持原样。所以cookie会过期,connect.sid会生成一个新的session id。

我怎样才能做到这一点?我认为它是由会话中间件自动完成的,但似乎 cookie 的到期和会话的到期是两件不同的事情,而不是 session._expires 它是干什么用的?

编辑

在这里DanielBaulig 更好地说明我的问题。正如 Marc B 在评论中所写,cookie 过期了,因此会话成为孤立的。这就是我想要避免的,我想在会话被触摸时更新 cookie。

4

1 回答 1

2

尝试

 cookie: { 
    secure: true,
    expires: new Date(Date.now() + 60 * 1000), // plus 1 minute
    maxAge: 60 * 1000 //1 minute
 }

我认为过期日期没有正确重置。

于 2012-10-11T16:32:23.630 回答