Serialization passport反序列化调用次数过多

Serialization passport反序列化调用次数过多,serialization,passport.js,Serialization,Passport.js,我不明白为什么我的反序列化方法被调用了这么多次。这是我的server.js文件 var express = require('express'); var app = express(); var passport = require('passport'); var bodyParser = require('body-parser'); var session = require('express-session'); var MongoSessionStore = require('co

我不明白为什么我的反序列化方法被调用了这么多次。这是我的server.js文件

var express = require('express');
var app = express();

var passport = require('passport');
var bodyParser = require('body-parser');
var session = require('express-session');
var MongoSessionStore = require('connect-mongo/es5')(session);    


// Local ENV ======================================================================

var env = require('./config/config.json')[app.get('env')];

// Mongo Database ======================================================================

var mongoInstance = require('./config/db.config.js');

mongoInstance.connection.on('open', function(){
    console.log('connection works');
});

// Configuration ======================================================================

app.use(session({
    secret: 'secretsarenofun', // Change this to anything else
    resave: false,
    saveUninitialized: true,
    store: new MongoSessionStore({
        mongooseConnection: mongoInstance.connection,
        autoRemoveInterval: 60
    })
}));

require('./config/passport.config.js')(passport, env, mongoInstance);

app.use(passport.initialize());
app.use(passport.session());

// Routes ======================================================================

var auth = require('./routes/auth.route')(app, passport);
var users = require('./routes/users.route')(passport);

// Middleware ======================================================================

app.use(express.static(__dirname + '/public'));
app.use('/users', users);
app.use('/auth', auth);

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());


// Launch ======================================================================

var server = app.listen(8000, function(){
    console.log('The dagger flies at 8000');
});

var io = require('socket.io').listen(server);

require('./sockets')(io);
在我的passport模块中我设置了这个

module.exports = function(passport, env, db){
    var request = require('request');
    var OpenIDStrategy = require('passport-openid').Strategy;
    var steamKey = 'test';
    var User = require('../models/user.model');

    var SteamStrategy = new OpenIDStrategy({
            providerURL: 'http://steamcommunity.com/openid',
            stateless: true,
            returnURL: env.path+'/auth/openid/return',
            realm: env.path,
        },
        function(identifier, done) {
            var steamId = identifier.match(/\d+$/)[0];

            return done(null, {
                identifier: identifier,
                steamId: identifier.match(/\d+$/)[0]
            });
        });

    passport.use(SteamStrategy);

    passport.serializeUser(function(user, done) {
        done(null, user.identifier.match(/\d+$/)[0]);
    });

    // used to deserialize the user
    passport.deserializeUser(function(identifier, done) {
        console.log('this calls too many times');

        //fetch
        done(null, identifier);
    });


};
当我在对反序列化函数调用进行了身份验证之后访问主页时,就像它应该做的那样,但它最多调用了8次

为什么会这样?我尝试移动app.use(passport.initialize());
app.use(passport.session());运气不错,但不完全是。为什么会发生这种情况?

移动
app.use(express.static(\uu dirname+'/public'))
上面
app.use(passport.initialize())

如果在使用express.static之前使用Passport的isAuthenticated中间件会怎么样?i、 应用程序使用('/profile',已验证,快速静态(…);然后您必须首先定义初始化passport并定义其策略。我正在将react代码编译到一个构建文件夹中,并使用express.static()为其提供服务,这就是我获取路由的基本方式。