Node.js redis中的Passport会话cookie不断创建

Node.js redis中的Passport会话cookie不断创建,node.js,express,passport.js,express-session,Node.js,Express,Passport.js,Express Session,My express应用程序使用PassportJS存储身份验证会话,但它在redis store中创建了数量惊人的密钥,所有密钥看起来都一样: "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"passport\":{}}" 他们确实有一个TTL,但商店的规模在不断扩大,这是没有充分理由的。你知道为什么要创造这些吗?我的钥匙看起来像: "sess:8R3A-k6

My express应用程序使用PassportJS存储身份验证会话,但它在redis store中创建了数量惊人的密钥,所有密钥看起来都一样:

"{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"passport\":{}}"
他们确实有一个TTL,但商店的规模在不断扩大,这是没有充分理由的。你知道为什么要创造这些吗?我的钥匙看起来像:

"sess:8R3A-k6dARJvxXFdAXr5nTG7MeC7JTxb"
"sess:s4VYC-k-nmfSf7n-qGQJimFmt30EYNDp"
"sess:BS7WO92Nyl5R0wAbJ-Vo9o8w1apu0kp7"
"sess:0B1AKS6-MCclPvOXV0nlvNio8U8fxyQO"
"sess:v0UWf60LMwKmMVZgo4RWumX313yPsiD0"
如果我只是观察一下,大约每一两秒钟就会创建10个关键点

以下是我的会话代码的外观:

var express = require('express'),
    ....
    session = require('express-session'),
    redisStore = require('connect-redis')(session);

...
    app.use(express.static(path.resolve('./public')));

    //Redis
    var redisClient = redisHelper.init();

    app.use(session({
        secret: '...',
        store: new redisStore({
            client: redisClient,
            ttl: 86400
        }),
        resave: false,
        saveUninitialized: false,
        cookie:{maxAge:86400}
    }));

    //Passport
    app.use(passport.initialize());
    app.use(passport.session());
...
Redis init函数返回Redis客户端的实例:

exports.init = function () {
    redisClient = redis.createClient(config.redis.port, config.redis.server, {});

    redisClient.auth(config.redis.auth);

    redisClient.on('error', function (error) {
        //TODO: log the error
        winston.error('Error while talking to Redis', {message: error});
    });

    return redisClient;
};

我认为你的应用程序实际上获得了流量,并且你假设该应用程序为每个用户创建了多个会话,对吗?它获得了一些流量,实际上很少。会话/存储看起来还可以,在你的问题中添加
redisHelper.init()
的代码可能也很有用。您是否尝试为每个会话添加用户的IP,以查看是否只有一个用户创建了一组会话?@AshleyB您添加用户的IP是什么意思?您的意思是将其记录到控制台吗?为每个请求(中间件)将用户IP添加到会话中,这样您就可以知道它是否只是一个用户。