【发布时间】:2016-02-14 05:52:29
【问题描述】:
如何判断 express 何时创建新会话?我正在使用 mongodb 会话存储。
我在创建额外会话时遇到问题,并希望通过跟踪哪些 url 请求正在触发创建新会话来缩小问题范围。
【问题讨论】:
标签: javascript node.js mongodb express express-session
如何判断 express 何时创建新会话?我正在使用 mongodb 会话存储。
我在创建额外会话时遇到问题,并希望通过跟踪哪些 url 请求正在触发创建新会话来缩小问题范围。
【问题讨论】:
标签: javascript node.js mongodb express express-session
Nate 的回答很好。我之所以回答是因为我想添加 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。【讨论】:
这就是我最终要做的。
app.use(function(req, res, next) {
if (!req.session.returning) {
// session was just created
req.session.returning = true
} else {
// old session
}
next()
})
【讨论】:
returning。我不确定你是否应该(仍然)依赖这种方法
您可以挂钩到genid 回调。默认情况下,express-session 会生成自己的会话 ID。
但是您可以通过指定genid 回调自己生成会话ID。在此回调中,您可以记录正在创建新会话(然后返回唯一的会话 ID)。
这里是一个例子,改编自express-session README:
app.use(session({
genid: function(req) {
console.log('New session was created');
return genuuid(); // generate a UUID somehow and return it
},
secret: 'keyboard cat'
}));
【讨论】: