【问题标题】:What is "done" callback function in Passport Strategy Configure "use" function什么是 Passport Strategy 中的“完成”回调函数配置“使用”函数
【发布时间】:2015-11-16 04:45:19
【问题描述】:

我是 node.js 和 express.js 菜鸟。这个问题可能看起来很傻,但我真的很困惑。

我正在尝试使用passport 配置Local Strategry 身份验证。如官方文档所示,我们可以通过以下代码来计算这个Local Strategy,

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

我对@9​​87654324@ 回调函数感到困惑。当官方文档显示此本地策略在路由处理程序中用作中间件时,无需为此done 回调传递函数参数。

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

那么,如果我们不提供函数参数,这个done 回调函数不是会为空吗?如果不是,那个done回调函数是什么,这个done回调函数会发生什么过程?

【问题讨论】:

    标签: javascript node.js express callback passport.js


    【解决方案1】:

    done 是一个方法called internally by the strategy implementation

    然后,如您所见,它会将您导航到 success / error / fail 方法之一(同样,通过实现。there are more options)。 这些选项中的每一个都可以callsnext,在您的 sn-p 代码中如下:

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

    success 被调用时,it can attach the user to the request 或做其他事情,这取决于你的需要(它会寻找你传递给passport.authenticateoptions)。如果您想确定何时调用next,则应使用custom callback,这为您提供了更大的灵活性。

    我强烈建议您阅读源代码。

    【讨论】:

    • 感谢您的回答。几个小时后,我问了这个问题,我逐渐明白“完成”可能是通过护照在内部管理的。现在,当我看到你的答案时,我就明白了。
    • passportjs 文档需要重大改进
    猜你喜欢
    • 2019-10-26
    • 1970-01-01
    • 2010-10-23
    • 2018-08-12
    • 2020-07-28
    • 2020-10-10
    • 1970-01-01
    相关资源
    最近更新 更多