通过 hapi.js 中的插件链接请求过滤器

chaining request filters through plugins in hapi.js

我需要在对 hapi.js rest api 的所有请求中验证 client-key 以及 jsonwebtoken header。

我目前正在使用 hapi-auth-jwt 插件来处理 json 网络令牌 - 现在我还想放入一个处理程序来检查 api header 上游 - 在它进行任何网络令牌检查和其他一切之前 - 这样它可以快速 return 401 如果不包括有效的 client-api-key。

我应该把它作为 hapi 中的插件吗?如果是这样,我如何设置 运行 的插件顺序 - 它只是我注册插件的顺序吗?

如何设置插件以拦截所有 http 请求 - 我应该将其设为身份验证方案吗?

exports.register = function (server, options, next) { 
// do I somehow set a default request handler here somehow?
}

您可以在 Hapi 请求生命周期中注册一个 extension function for the available extension points

在您的情况下,由于您希望请求在验证之前针对有效的客户端-api-密钥进行验证,因此可以为 onRequest 或 [=12= 注册扩展功能] 事件。

exports.register = function (server, options, next) { 

    server.ext('onRequest', function (request, reply){

        //Validate the request object here.

        if (valid) reply.continue();
        else reply(Boom.unauthorized('Invalid API Key'));
    });

    next();
}