【发布时间】:2012-10-02 08:17:50
【问题描述】:
在节点中,我有一个 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会过期,会生成一个新的session idconnect.sid。
我怎样才能做到这一点?我以为它是由会话中间件自动完成的,但似乎 cookie 的到期和会话的到期是两件不同的事情,而不是 session._expires 是干什么用的?
编辑
HereDanielBaulig 更好地解决我的问题。正如 Marc B 在 cmets 中所写,cookie 过期了,因此会话成为孤立的。这就是我想要避免的,我想在会话被触摸时更新 cookie。
【问题讨论】:
-
cookie 生存期设置 cookie 在用户浏览器中的生存时间。会话生命周期设置会话应该在服务器上存活多长时间。可以让它们中的任何一个独立于另一个过期。
-
@MarcB clear,谢谢,所以如果我是对的,我应该自己更新我的 cookie,或者将其保留为空,并为会话设置一个 maxAge(这将是另一个问题。:))。
-
如果用户的 cookie 过期,相应的会话文件将成为孤立文件,用户将被“注销”。如果会话文件过期,用户也会被“注销”,即使他们拥有曾经有效的会话 cookie。
-
@MarcB 您的 cmets 回答了我的问题,如果您将其作为答案发布,我可以接受。