1

How can I tell when express creates a new session? I'm using a mongodb session store.

I'm having an issue with extra sessions being created, and want to narrow down on the problem by tracking which urls requests are triggering new sessions to be created.

4

3 回答 3

3

这就是我最终做的。

app.use(function(req, res, next) {
    if (!req.session.returning) {
        // session was just created
        req.session.returning = true
    } else {
        // old session
    }
    next()
})
于 2015-11-12T22:12:56.750 回答
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'
}));
于 2015-11-12T19:25:38.803 回答
0

Nate的回答很好。我之所以回答是因为我想添加两个内容。

  1. 如果您还想要express-session 否则会生成的那种 sessionID 。你可以这样做:
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
    },
  1. 请注意,您不能将async函数用于 genid。Express-session 在没有 的情况下调用此函数await,因此将获得一个承诺而不是 uid。
于 2019-09-19T11:57:01.003 回答