【发布时间】:2013-12-26 15:04:06
【问题描述】:
我可能只是不明白 Express 是如何管理会话的,但是当我将会话设置为 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 设置为在浏览会话结束时过期,而不是指定的 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 天后过期;这是否也会在 7 天内使服务器上的会话过期?我会认为这两者是默认耦合的。
对于奖励积分;在生产中,会话将存储在 Redis 或类似中,但在开发过程中,我将它们存储在内存中。有没有办法让我看到这些数据来验证它何时也设置为过期?
获得更多积分!我相信默认情况下会话不会“滚动”?我读到req.session.touch() 将重置会话;这是否也会重置会话 cookie 的 TTL?如果不是,你会如何建议我“滚动”这些会议,例如
会话最初设置为 7 天。 在第 3 天,用户返回,会话到期时间重置为此次访问后的 7 天。 等等。
所以用户可以拥有一个永久会话,只要他们在任何滚动的 7 天内活跃一次。
一如既往,非常感谢您的帮助!
【问题讨论】:
标签: node.js session cookies express session-cookies