Подтвердить что ты не робот

Passport.js с несколькими поставщиками аутентификации?

Используя Passport.js, есть ли способ указать несколько поставщиков проверки подлинности для одного и того же маршрута?

Например (из паспортного руководства) можно использовать локальные стратегии и стратегии facebook и twitter на маршруте примера ниже?

app.post('/login',
  passport.authenticate('local'), /* how can I add other strategies here? */
  function(req, res) {
    // If this function gets called, authentication was successful.
    // `req.user` contains the authenticated user.
    res.redirect('/users/' + req.user.username);
  });
4b9b3361

Ответ 1

Связующее ПО Passport построено таким образом, чтобы вы могли использовать несколько стратегий в одном вызове passport.authenticate(...).

Однако он определяется с помощью порядка OR. Это значит, что это не сработает, если ни одна из стратегий не вернет успех.

Вот как вы его используете:

app.post('/login',
  passport.authenticate(['local', 'basic', 'passport-google-oauth']), /* this is how */
     function(req, res) {
       // If this function gets called, authentication was successful.
       // `req.user` contains the authenticated user.
       res.redirect('/users/' + req.user.username);
});

Другими словами, способ использовать его, передает массив, содержащий имя стратегий, которые вы хотите, чтобы пользователь аутентифицировался.

Кроме того, не забудьте заранее настроить стратегии, которые вы хотите реализовать.

Вы можете подтвердить эту информацию в следующих файлах github:

Аутентификация с использованием базового или дайджест в примере с несколькими авторами.

Определение аутентификации passport