如何表达express创建新会话的时间?我正在使用mongodb会话商店。
我遇到了创建额外会话的问题,并希望通过跟踪哪些网址请求触发要创建的新会话来缩小问题范围。
答案 0 :(得分:2)
您可以加入genid
回调。默认情况下,express-session
会生成自己的会话ID。
但您可以通过指定genid
回调来自行生成会话ID。在此回调中,您可以记录正在创建新会话(然后返回唯一的会话ID)。
这是一个例子,改编自express-session
自述文件:
app.use(session({
genid: function(req) {
console.log('New session was created');
return genuuid(); // generate a UUID somehow and return it
},
secret: 'keyboard cat'
}));
答案 1 :(得分:2)
这就是我最终要做的事情。
app.use(function(req, res, next) {
if (!req.session.returning) {
// session was just created
req.session.returning = true
} else {
// old session
}
next()
})
答案 2 :(得分:0)
内特的回答很好。我要回答,是因为我想补充2个。
const uid = require('uid-safe').sync;
//...
genid: function(req) {
console.log('New session was created');
// do what you want to do here!
return uid(24); // <-- the way express-session generates it
},
async
函数用于Genid。 Express-session在不使用await
的情况下调用此函数,因此将获得一个Promise而不是uid。