2016-09-28 4 views
0

Versuch https://github.com/jaredhanson/passport/blob/master/lib/middleware/authenticate.js, auf Linie zu verstehen 57.unlogisch Pass authenticate Methode Argumente

Ich verstehe nicht, warum der Pass authenticate Methode 4 Argumente hat:

module.exports = function authenticate(passport, name, options, callback){/*code*/} 

In der Praxis wie folgt verwendet wird:

passport.authenticate('local', { successRedirect: '/', failureRedirect: '/login' }); 

oder

passport.authenticate('local', function(req, res)); 

Wie kommt also das erste Argument "Pass" in der Methode Definition nicht stören? Da der Strategie-Name als erstes Argument übergeben wird, sollte er dem Passport zugeordnet werden, nicht dem Namen.

+0

Wenn dies Python wäre, würde ich Ihnen sagen, dass das erste Argument das Objekt "pass" von dem Ausdruck "pass.authenticate" erhält. Javascript funktioniert normalerweise nicht so, aber ich wäre nicht überrascht zu erfahren, dass jemand einen Weg gefunden hat, * es * so zu machen. – zwol

Antwort

3

Sie verfehlten eine Zwischenschicht here:

Authenticator.prototype.authenticate = function(strategy, options, callback) { 
    return this._framework.authenticate(this, strategy, options, callback); 
}; 

passport Die Variable ist eine Instanz der Klasse Authenticator, so dass das Verfahren darstellt oben passport.authenticate(). Wie Sie sehen, hat es einen Verweis auf sich selbst als erstes Argument an die Funktion übergeben, auf die Sie sich beziehen (auf die sich this._framework.authenticate bezieht).

Verwandte Themen