不合逻辑的Passport验证方法参数

时间:2016-09-28 14:38:10

标签: javascript node.js express passport.js

试图理解 https://github.com/jaredhanson/passport/blob/master/lib/middleware/authenticate.js,第57行。

我不明白为什么护照验证方法有4个参数:

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

在实践中它的使用方式如下:

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

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

那么方法定义中的第一个参数“护照”怎么没有干扰呢?由于策略名称作为第一个参数传递,因此应将其映射到不是名称的通行证。

1 个答案:

答案 0 :(得分:3)

您错过了中间层here

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

passport变量是Authenticator类的实例,因此上述方法代表passport.authenticate()。正如您所看到的,它将对自身的引用传递给您所指的函数的第一个参数(由this._framework.authenticate引用)。