一尘不染

什么是Passport Strategy中的“完成”回调功能配置“使用”功能

node.js

我是一个node.js和express.js新手。这个问题看似愚蠢,但我真的很困惑。

我正在尝试使用通行证配置本地策略身份验证。如官方文档所示,我们可以通过以下代码来计算此本地策略,

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

我的困惑是关于done回调函数。当官方文档在路由处理程序中将此中间策略用作中间件时,无需为此done回调传递function参数。

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

因此,done如果不提供function参数,此回调函数是否不为null?如果不是,那么该done回调函数是什么以及该done回调函数将发生什么过程?


阅读 321

收藏
2020-07-07

共1个答案

一尘不染

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

然后您导航,你可以看到,到的一个success/ error/
fail方法(同样,通过实施。有更多的选择)。每个选项可以调用next,在你的代码片段,其中如下:

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

success被调用时,它可以将用户连接请求或做其他事情,这取决于你的需求(它看起来为options您传递给passport.authenticate)。如果您想确定何时next调用,则应使用custom callback,它会给您带来更大的灵活性。

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

2020-07-07