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

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:

Аутентифицируйте, используя основной или дайджест в мульти-аутентичном примере.

Определение паспорта authenticate.js

Другие вопросы по тегам