web-dev-qa-db-fra.com

passport.js avec plusieurs fournisseurs d'authentification?

En utilisant Passport.js, existe-t-il un moyen pour moi de spécifier plusieurs fournisseurs d'authentification pour le même itinéraire?

Par exemple (à partir du guide du passeport) puis-je utiliser les stratégies locales et Facebook et Twitter sur l'exemple de parcours ci-dessous?

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

Le middleware de Passport est conçu de manière à vous permettre d'utiliser plusieurs stratégies en un seul appel à passport.authenticate(...).

Cependant, il est défini avec un ordre OR. Autrement dit, il échouera uniquement si aucune des stratégies n'a réussi.

Voici comment vous l'utiliseriez:

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

En d'autres termes, la façon de l'utiliser consiste à passer un tableau contenant le nom des stratégies avec lesquelles l'utilisateur doit s'authentifier.

N'oubliez pas non plus de configurer au préalable les stratégies que vous souhaitez mettre en œuvre.

Vous pouvez confirmer ces informations dans les fichiers github suivants:

Authentifiez-vous à l'aide de base ou de résumé dans l'exemple multi-authentification.

définition authenticate.js du passeport

81
Danilo Ramirez