req.session.passport и req.user blank, а req.isAuthenticated возвращает false после первоначального успешного входа в систему с использованием passport-facebook

После первоначального успешного входа из Facebook и обратного вызова перенаправления входа с использованием passport-facebook 1.0.3 и express 4.6.1, req.session.passport и req.user содержат значение, установленное во время вызова сериализации (который я получаю из stragegy), но при последующих посещениях различных маршрутов на сайте req.session.passport и req.user не указываются, а req.isAuthenticated () возвращает значение false, поэтому после первоначального успешного входа в систему из FB происходит сбой метода sureAuthentication на всех других маршрутах. Я не использую настройку кластера, поэтому я считаю, что хранилища памяти достаточно для этого, экспресс-конфигурация выглядит хорошо (я имею в виду порядок), вот моя экспресс-конфигурация

configExpressApp.set('views',  './views');
configExpressApp.set('view engine', 'jade');
configExpressApp.use(morgan('dev'));
configExpressApp.use(cookieParser());
configExpressApp.use(bodyParser.urlencoded({
  extended: true,
}));
configExpressApp.use(bodyParser.json());
configExpressApp.use(expressSession({
  secret:'MyExpressSecret', 
  saveUninitialized: true,
  resave: true
}));
configExpressApp.use(passport.initialize());
configExpressApp.use(passport.session());
configExpressApp.use(methodOverride());
configExpressApp.use(express.static('./public'));   

Вот объект req.session при начальном успешном входе в систему и перенаправлении. Req.user содержит те же данные, что и req.session.passport.user

{ cookie: 
   { path: '/',
     _expires: null,
     originalMaxAge: null,
     httpOnly: true },
  passport: 
   { user: 
      { _id: 53ce23e3121421f229a438f8,
        info: false,
        loginType: 'fb',
        fbId: 'MyId',
        name: 'Karthic Rao',
        email: '[email protected]'

        }
     }
} 

это информация, которую я ранее связывал с обратным вызовом done () внутри стратегии, а также внутри вызова сериализации. После успешного входа в систему и обратного вызова я использую res.redirect, чтобы перенаправить пользователя на другой маршрут, но запросы, поступающие с этого маршрута, содержат sessionID (поэтому я не думаю, что это проблема с хранилищем сеансов), но req.user поле не существует (возможно, из-за того, что промежуточные программы passport.initialize () и passport.session () не находят запрос на проверку подлинности), а поле req.session.passport пусто, здесь приведены подробности из console.log запроса объект.

sessionID: 'I9R1c3PIYgDW5OpWbNT7qb02Hn4lOeAB',
session: 
   { cookie: 
      { path: '/',
        _expires: null,
        originalMaxAge: null,
        httpOnly: true },
     passport: {} },

Вот мой метод десериализации

passport.deserializeUser(function(user, done) {
    console.log('deserialize loginType facebook');
    db.collection("users").findOne({
        fbId: user.id
    }, function(err, docs) {
        console.log(docs);
        done(err, docs);
    });
});

Вот мой метод сериализации

passport.serializeUser(function (user, done) { 
    console.log(user);
    done(null, user);
});

Это создает большие препятствия для моего развития, как я могу разобраться в этом ??

Ответы на вопрос(1)

Ваш ответ на вопрос