我是一个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参数。
done
app.post('/login', passport.authenticate('local'), function(req, res) { res.redirect('/'); });
因此,done如果不提供function参数,此回调函数是否不为null?如果不是,那么该done回调函数是什么以及该done回调函数将发生什么过程?
done是策略实施内部调用的一种方法。
然后您导航,你可以看到,到的一个success/ error/ fail方法(同样,通过实施。有更多的选择)。每个选项可以调用的next,在你的代码片段,其中如下:
success
error
fail
next
function(req, res) { res.redirect('/'); });
当success被调用时,它可以将用户连接请求或做其他事情,这取决于你的需求(它看起来为options您传递给passport.authenticate)。如果您想确定何时next调用,则应使用custom callback,它会给您带来更大的灵活性。
options
passport.authenticate
custom callback
我强烈建议您阅读源代码。