web-dev-qa-db-fra.com

Qu'est-ce que la fonction de rappel "fait" dans la stratégie de passeport Configurer la fonction "utiliser"

Je suis un noeud node.js et express.js. Cette question peut sembler idiote, mais je suis vraiment dans la confusion.

J'essaie de configurer l'authentification Stratégies locales en utilisant passeport . Comme indiqué dans la documentation officielle, nous pouvons représenter cette stratégie locale par le code suivant,

passport.use(new LocalStrategy(
  function(username, password, done) {
    User.findOne({ username: username }, function (err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      if (!user.verifyPassword(password)) { return done(null, false); }
      return done(null, user);
    });
  }
));

Ma confusion concerne la fonction de rappel done. Lorsque les documents officiels montrent cette stratégie locale en tant que middleware dans le gestionnaire d'itinéraire, il n'est pas nécessaire de passer le paramètre de fonction pour ce rappel done.

app.post('/login', 
  passport.authenticate('local'),
  function(req, res) {
    res.redirect('/');
  });

Donc, cette fonction de rappel done sera nulle si nous ne fournissons pas le paramètre de fonction? Sinon, quelle est cette fonction de rappel done et quels processus se produiront dans cette fonction de rappel done?

22
Steve.NayLinAung

done est une méthode appelée en interne par l'implémentation de la stratégie .

Ensuite, il vous dirige, comme vous pouvez le voir, vers l'une des méthodes success/error/fail (là encore, par l'implémentation. il y a plus d'options ). Chacune de ces options peut appelle vers next, où dans votre code d'extrait de code est le suivant:

function(req, res) {
  res.redirect('/');
});

Lorsque success est appelé, il peut attacher l'utilisateur à la demande ou faire d'autres choses, selon vos besoins (il recherche le options que vous passez à passport.authenticate). Si vous voulez déterminer quand next sera appelé, vous devez utiliser custom callback qui vous donne plus de flexibilité.

Je vous recommande fortement de lire la source.

35
Roy Miloh