Проверка подлинности паспорта, необходимо базовое объяснение - PullRequest
1 голос
/ 27 марта 2019

Может кто-нибудь объяснить, что и почему мы включаем (req, res, next) в конец passport.authenticate, все, что я видел в уроках, это то, что оно нам нужно, потому что мы хотим, чтобы оно срабатывало немедленно, но я не совсем понимаю.

Вот код:

router.post('/login', (req, res, next) => { <br>
    passport.authenticate('local', { <br>
        successRedirect: '/songs/list', <br>
        failureRedirect: '/users/login', <br>
        failureFlash: true <br> 
    })(req, res, next);                  <---- *This line*

1 Ответ

1 голос
/ 27 марта 2019

Вы объявляете функцию и вызываете ее немедленно .. Вы делаете это, чтобы получить доступ к объекту req внутри passport.authenticate.

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

app.post("/protected",passport.authenticate("local",{
        successRedirect:"/user",
        failureRedirect:"/login"
    }),function(req,res){
});

А если вашему приложению необходим доступ к объекту req, то:

app.get('/protected', function(req, res, next) {
  passport.authenticate('local', function(err, user, profile) {
    if (err) { return next(err) }
    if (!user) { return res.redirect('/signin') }
    res.redirect('/account');
  })(req, res, next);
});

Подробнее @ https://github.com/jaredhanson/passport/issues/1

...