2016-05-13 32 views
0

Aufruf Hier ist mein Code:Passport.js erfolgreicher Authentifizierung nicht bei allen

passport.use(new localStrategy(
    function(username, password, done) { 
     User.findOne({ 
      username: username 
     }, function(err, user) { 
      if (err) throw err; 
      if (!user) { 
       console.log("Unknown User"); 
       return done(null, false, { 
        message: "Unknown User" 
       }) 
      } 
      if (!user.validPassword(password)) { 
       console.log("Incorrect password.", password); 
       return done(null, false, { 
        message: 'Incorrect password.' 
       }); 
      } 

      console.log("User Is detected"); 
      return done(null, user, { 
       message: "User Is detected" 

      }) 

     }); 
    } 
)); 


router.post('/login', 
    passport.authenticate('local', { 
     successRedirect: '/', 
     failureRedirect: '/users/login', 
     failureFlash: true, 
     successFlash: 'Welcome!' 
    }), 
    function(req, res) { // this function not called 
     console.log(req) 
    }); 

alles funktioniert perfekt, aber der Erfolg Funktion nicht aufrufen, und ich will diese Nachricht haben: "welcome"+req.body.username nach angemeldet.

Irgendwelche Tipps? thx

+0

Sind Sie eine der console.log von LocalStrategy bekommen? –

+0

@HirenS. ja, alle von ihnen – sani

Antwort

1

Vom documentation of passport.authenticate():

die Umleitung Optionen, um das Standardverhalten außer Kraft setzen

In Ihrem Beispiel, weil Sie die successRedirect Option gesetzt ist, wird die nächste Funktion in der Middleware-Kette nicht geltend gemacht werden, nach erfolgreicher Authentifizierung.

Wenn Sie Ihre Funktion wollen, bevor sie '/' Umleitung aufgerufen werden, dann sollten Sie:

router.post('/login', 
    passport.authenticate('local', { 
     failureRedirect: '/users/login', 
     failureFlash: true 
    }), 
    function(req, res) { 
     // This should show up in your logs: 
     console.log('Welcome ' + req.body.username); 

     // You can also use a flash to consume after redirect: 
     // (provided that you use connect-flash in your app) 
     req.flash('info', 'Welcome ' + req.body.username); 

     res.redirect('/'); 
    } 
); 
+1

Sie sind ein Lebensretter :) – sani

Verwandte Themen