什么是Passport策略中的“完成”callback函数configuration“使用”function

我是一个node.js和express.js noob。 这个问题可能看起来很愚蠢,但我真的很困惑。

我正在尝试使用护照configuration本地策略身份validation。 如正式文件所示,我们可以通过以下代码来确定本地策略,

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

我的困惑是关于donecallback函数。 当官方文档使用路由处理器中的中间件来显示这个本地策略时,不需要为这个donecallback传递函数参数。

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

那么,如果我们不提供函数参数,是不是donecallback函数? 如果不是,那么donecallback函数是什么,以及在这个donecallback函数中将发生什么过程?

done是战略实施内部调用的一种方法。

然后,如您所见,它会导航到success / error / fail方法之一(再次,通过实施, 还有更多选项 )。 这些选项中的每一个都可能会调用 next ,其中代码段中的代码如下所示:

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

success被调用时, 它可以将用户附加到请求或做其他事情,这取决于您的需要(它会查找您传递给passport.authenticateoptions )。 如果你想确定next什么时候会被调用,你应该使用custom callback ,这给你更多的灵活性。

我强烈build议你阅读源代码。