2014-02-18 5 views
5

diese beglaubigen funktioniert gut und ich bekomme eine Umleitung:Passport authentifizieren Rückruf wird nicht erf und res bestanden

server.post(authPostRoute, passport.authenticate(
    'local' 
    , { successRedirect: '/', failureRedirect: '/login' } 
));  

diese beglaubigen nach dem Aufruf hängt wieder aufgerufen wird:

server.post(authPostRoute, passport.authenticate(
    'local' 
    , function(){ console.log('Hitting the callback'); console.log(arguments)} 
));  

diese protokolliert die folgende Stück:

{ '0': null, 
    '1': 
    { id: [Getter/Setter], 
    firstName: [Getter/Setter], 
    lastName: [Getter/Setter], 
    email: [Getter/Setter], 
    addedOn: [Getter/Setter], 
    active: [Getter/Setter], 
    password: [Getter/Setter] }, 
    '2': undefined } 

Aber in der gesamten Dokumentation (http://passportjs.org/guide/authenticate/) sieht es aus als ob es sich um req und res handeln würde, aber offensichtlich nicht. Dann wird der Code, der die Rückrufe:

node_modules \ Pass \ lib \ Middleware \ authenticate.js

strategy.success = function(user, info) { 
    if (callback) { 
     return callback(null, user, info); 
    } 

nicht diese Parameter übergeben. Was mache ich falsch?

Antwort

11

OK, ich arbeitete an meiner benutzerdefinierten Authentifizierung herauszureißen und gestern mit Pass 9 Stunden zu ersetzen. Nachdem ich das Node-Orm dazu gebracht hatte, das Modell außerhalb der Anfrage zu exponieren und mich mit dem Fluss der Ordnung der Dinge zu befassen, war ich ein wenig ausgebrannt. Die Codebeispiele sind genau, ich brauche nur mehr sorgfältig zu lesen:

// traditional route handler, passed req/res 
server.post(authPostRoute, function(req, res, next) { 

    // generate the authenticate method and pass the req/res 
    passport.authenticate('local', function(err, user, info) { 
    if (err) { return next(err); } 
    if (!user) { return res.redirect('/'); } 

    // req/res held in closure 
    req.logIn(user, function(err) { 
     if (err) { return next(err); } 
     return res.send(user); 
    }); 

    })(req, res, next); 

}); 
+1

Haben Sie das gleiche mit Social Logins versucht? – myusuf

+0

in passport.authenticate(), was err, Benutzer, info Parameter? – unlucy7735

+0

Es ist schon eine lange Zeit, da ich damit gearbeitet habe, aber ich glaube, dass, wenn Pass konfiguriert ist, Sie ihm eine Funktion zur Verfügung stellen, die einen UN/PWD nimmt, die Sie dann gegen Ihre Quelle authentifizieren können (dies geschieht innerhalb der passport.authenticate (‚local‘, ...) diese Implementierung liefert die Werte irren und Benutzer ich bin sicher, es Infos und bietet -.. aber ich kann die die bestimmungsgemäßen Verwendung dieses Feldes nicht mehr erinnern – akaphenom

2

passReqToCallback Aktivieren Sie die Anfrage in Rückruf zu erhalten. Gefällt mir:

passport.use(new FacebookStrategy({ 
    clientID: '555555555555555', 
    clientSecret: '555555555555555555555', 
    callbackURL: "http://localhost:3000/auth/facebook/callback", 
    enableProof: false, 
    passReqToCallback: true 
    }, 
    // The request will be provided as 1st param 
    function(req, accessToken, refreshToken, profile, done) { 
    });... 
Verwandte Themen