exports.signin = function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err || !user) {
res.status(400).send(info);
} else {
// Remove sensitive data before user.password = undefined; user.salt = undefined;
req.login(user, function(err) {
if (err) {
res.status(400).send(err);
} else {
res.json(user);
}
});
}
})(req, res, next);
};
这是AmosQ.Haviv.Who在“means”一书中的一段代码,可以告诉我passport.authenticate()方法的尾巴:(req,res,next)是什么意思?这是一个闭包吗?
发布于 2017-03-14 21:29:09
passport.authenticate()可能会接受“本地”设置(域?)以及用于创建将执行身份验证的新函数的回调。
这个函数确实会在'local‘和回调函数上创建一个闭包。新的auth函数将需要3个参数:原始请求(Uest)、res(ponse)对象和下一个参数,并使用( req, res, next )语法立即调用。
因此,这个特定的函数很可能会进行登录,然后运行用于创建auth函数的回调,将req和res传递回回调。
可以把它看作是一种使用passport.authenticate()方法创建不同版本的登录名的方法。一个用于“local”,一个用于“otherDomain”,等等。
https://stackoverflow.com/questions/42787053
复制相似问题