2017-02-01 12 views
0

Я использую стандартный пример из here, который содержит:паспорт facebook Войти не сохраняются

app.get('/login/facebook', 
    passport.authenticate('facebook')); 

app.get('/login/facebook/return', 
    passport.authenticate('facebook', { failureRedirect: '/login' }), 
    function(req, res) {  //req.user is populated 
    res.redirect('/'); 
    }); 

app.get('/', function (req, res) { 
    res.render('index.jade', { user: req.user }); //req.user is undefined 
}); 

Войти, как представляется, отлично работает. В /login/facebook/return Я могу видеть req.user и его подробности. Но после перенаправления на /, req.user становится undefined.

Есть ли что-нибудь еще, что я должен добавить, чтобы заставить его работать?

+0

убедитесь, что у вас есть 'app.use (passport.initialize()); и' app.use (passport.session()); 'перед вашим маршрутизатором. –

+0

Спасибо за подсказку. Я переделал образец кода с 'express-session' * после *' passport.initialize() '. Перемещая 'экспресс-сессию', прежде чем' passport.initialize() 'разрешит проблему. –

+0

Я рад, что вам удалось это решить. Я также разместил его как ответ. –

ответ

1

В соответствии с Passportjs Documentations, passport.initialize() и passport.session() (для постоянных входов в систему) должно быть промежуточное программное добавлен к app после express-session.

Из документов:

Обратите внимание, что включение поддержки сеанса совсем не обязательно, хотя и рекомендуется для большинства применений. Если включено, обязательно используйте express.session() до passport.session(), чтобы убедиться, что сеанс входа в систему восстановлен в правильном порядке.

app.configure(function() { 
    app.use(express.static('public')); 
    app.use(express.cookieParser()); 
    app.use(express.bodyParser()); 
    app.use(express.session({ secret: 'keyboard cat' })); 
    app.use(passport.initialize()); 
    app.use(passport.session()); 
    app.use(app.router); 
});