node.js - 在 Express 中, session Cookie 过期太早

标签 node.js session cookies express session-cookies

我可能不太明白 Express 是如何管理 session 的,但是当我将 session 设置为 7 天后过期时,例如

app.configure(function () {
  app.set(express.static(__dirname + '/public'));
  app.use(express.bodyParser());
  app.use(express.cookieParser());
  app.use(express.session({
    expires: new Date(Date.now() + (60 * 60 * 24 * 7 * 1000)),
    secret: ''
  }));
});

Cookie 设置为在浏览 session 结束时过期,而不是指定的 7 天。

如果我更改上面的代码,例如

app.configure(function () {
  app.set(express.static(__dirname + '/public'));
  app.use(express.bodyParser());
  app.use(express.cookieParser());
  app.use(express.session({
    cookie: {
      expires: new Date(Date.now() + (60 * 60 * 24 * 7 * 1000)),
    },
    secret: ''
  }));
});

cookie正确设置为7天后过期;这是否也会使服务器上的 session 在 7 天后过期?我本以为两者默认是耦合的。

奖励积分;在生产中, session 将存储在 Redis 或类似设备中,但在开发过程中,我将它们存储在内存中。有没有办法让我看到这些数据来验证它何时过期?

获得更多积分!我相信 session 默认情况下不是“滚动”的?我读到 req.session.touch() 将重置 session ;这是否也会重置 session cookie 的 TTL?如果没有,您建议我如何“滚动” session ,例如

session 最初设置为 7 天。 在第 3 天,用户返回, session 过期时间重置为自本次访问起的 7 天。 等等

因此,用户可以拥有永久 session ,只要他们在任意滚动 7 天内活跃一次即可。

一如既往,非常感谢您的帮助!

最佳答案

MemoryStore是默认的,很简单,而且不支持TTL。

source code

如果你想访问MemoryStore,只需这样做:

var ms = new MemoryStore();
app.use(express.session({
   store: ms
   ...
}))'

ms.all(function (err, array_of_session) { 
   console.log(array_of_session);
});

应该使用redis或mongo来存储session。例如connect-mongo,它支持TTL和副本集。 https://github.com/kcbanner/connect-mongo

session 滚动? 不,你可以自己做

阅读此内容 https://github.com/senchalabs/connect/issues/670

关于node.js - 在 Express 中, session Cookie 过期太早,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20471733/

相关文章:

javascript - 在AngularJS中更改http请求 header 而不刷新

javascript - 如何正确调用fs.writeFile

node.js - 使用 Typescript 导出默认常量

php - CakePHP 使用 Auth 记住我

r - 命名 R 的多个开放 session

javascript - 悬停在页面之外时触发的灯箱弹出窗口的 Cookie 逻辑

javascript - `npm run build`之后的配置文件可编辑

javascript - 无法通过递归调用 node.js 中的函数从 promisese 获得响应

python - 如何在 flask 中设置 session 限制?

javascript - 在页面关闭时保存动态变量