我可能只是不明白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天内活动一次,用户就可以进行永久会话。
与往常一样,非常感谢帮助!
答案 0 :(得分:1)
MemoryStore是默认设置,非常简单,不支持TTL。
如果你想访问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来存储会话。例如connect-mongo,它支持TTL和副本集。 https://github.com/kcbanner/connect-mongo
会话滚动? 不,你可以自己动手