2017-02-01 6 views
0

ich das Standardbeispiel von here bin mit welcher enthält:Passfacebook Login bleibt nicht

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 
}); 

Der Login zu funktionieren scheint. In /login/facebook/return konnte ich req.user und seine Details sehen. Aber nach der Umleitung auf / wird req.userundefined.

Gibt es noch etwas, das ich hinzufügen muss, damit es funktioniert?

+0

stellen Sie sicher, Sie haben 'app.use (passport.initialize());' und 'app.use (passport.session());' vor Ihrem Router. –

+0

Danke für den Tipp. Ich hatte den Beispielcode nach 'pass.initialize()' '' express-session' * umgeordnet. Durch das Verschieben von "express-session" vor "pass.initialize()" wurde das Problem gelöst. –

+0

Ich bin froh, dass Sie es geschafft haben, es zu lösen. Ich habe es auch als Antwort gepostet. –

Antwort

1

Nach Passportjs Documentations, passport.initialize() und passport.session() (für persistente Logins) Middle zum app nach express-session hinzugefügt werden soll.

Aus der Dokumentation:

Beachten Sie, dass Session-Unterstützung ermöglicht völlig optional ist, obwohl es für die meisten Anwendungen empfohlen. Wenn diese Option aktiviert ist, verwenden Sie unbedingt express.session() vor passport.session(), um sicherzustellen, dass die Anmeldesitzung in der richtigen Reihenfolge wiederhergestellt wird.

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); 
}); 
Verwandte Themen