node.js - 如何直接调用Connect中间件?

标签 node.js connect express

我有这样一条快速路线:

app.get('/', auth.authOrDie, function(req, res) {
    res.send();
});

authOrDie 函数定义如下(在我的 auth.js 模块中):

exports.authOrDie = function(req, res, next) {
    if (req.isAuthenticated()) {
        return next();
    } else {
        res.send(403);
    }
});

现在,当用户未通过身份验证时,我想验证 http 请求是否具有 Authorization (Basic) header 。为此,我想使用出色的连接中间件 basicAuth() .

如您所知,Express 构建于 Connect 之上,因此我可以使用 express.basicAuth

basicAuth一般是这样使用的:

app.get('/', express.basicAuth(function(username, password) {
    // username && password verification...
}), function(req, res) {
    res.send();
});

但是,我想像这样在我的 authOrDie 函数中使用它:

exports.authOrDie = function(req, res, next) {
    if (req.isAuthenticated()) {
        return next();
    } else if {
        // express.basicAuth ??? ******
    } else {
        res.send(403);
    }
});

****** 如何使用正确的参数调用 basicAuth 函数(req?res?next?...)。

谢谢。

最佳答案

调用 express.basicAuth 函数会返回要调用的中间件函数,因此您可以像这样直接调用它:

exports.authOrDie = function(req, res, next) {
    if (req.isAuthenticated()) {
        return next();
    } else {
        return express.basicAuth(function(username, password) {
            // username && password verification...
        })(req, res, next);
    }
});

关于node.js - 如何直接调用Connect中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14267807/

相关文章:

angularjs - socket.io 手动将用户添加到房间(node.js)

node.js - 不使用外部邮件服务器实现邮件确认?

node.js - 在服务器和客户端之间传输图像的最佳方式是什么?

c++ - QObject::connect timer with update() 函数

node.js - 在 TypeScript 中使用 instanceof

node.js - 安装express/body-parser Node js Eclipse 插件时出现问题

node.js - 如何配置NGINX代理API调用以部署到Kubernetes上的后端?

bash - Unix:是否有替代 expect 命令的方法?

php - 为什么在同一文件中使用自定义函数时,每次都需要重新连接到数据库?

javascript - 如何从NodeJS中的静态页面访问index.js