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的《MEAN Web Development》书中的一段代码。谁能告诉我passport.authenticate()'tail:(req, res, next)方法是什么意思?这是一个闭包吗?
最佳答案
passport.authenticate()
可能会接受设置“本地”(域?)和回调来创建一个将进行身份验证的新函数。
这个函数确实会在“local”和回调上创建一个闭包。
新的 auth 函数需要 3 个参数:原始 req(uest)、res(ponse) 对象和下一个参数,并立即使用 ( req, res, next )
语法调用。
因此,这个特定函数很可能会执行登录,然后运行用于创建 auth 函数的回调,将 req 和 res 传递回回调。
将其视为一种使用 Passport.authenticate() 方法来创建您可以使用的不同版本的登录名的方法。一种用于“本地”,一种用于“其他域”,等等。
关于javascript - MEAN Web Development 2en 中的一些代码令人困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42787053/