【问题标题】:Why does my session cookie expire?为什么我的会话 cookie 会过期?
【发布时间】: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 回答了我的问题,如果您将其作为答案发布,我可以接受。

标签: node.js express connect


【解决方案1】:

试试

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

我认为过期日期未正确重置。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 2011-05-07
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多