javascript - MEAN Web Development 2en 中的一些代码令人困惑

标签 javascript node.js express passport.js

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/

相关文章:

javascript - 更新时 meteor 、响应式(Reactive)数组渲染问题

javascript - 过滤掉未定义的属性

javascript - 返回 html 作为 ajax 响应

javascript - 亚马逊 s3 : How can I name a new folder after each new username?

javascript - 从私有(private)以太坊区 block 链在浏览器中实时更新用户余额

javascript - 书架JS : "this.hasOne" is not a function

node.js - 如何解决平台 flutter 不允许的不安全http?

javascript - 在 express.js 中加载静态文件

javascript - 单击按钮时如何显示div?

node.js - 单元测试快速路由器