通过hapi.js

时间:2015-06-29 16:15:23

标签: hapijs

我需要在hapi.js rest api的所有请求中验证客户端密钥和jsonwebtoken标头。

我目前正在使用hapi-auth-jwt插件来处理json web令牌 - 现在我还想在一个处理程序中检查上游api头中的有效客户端密钥 - 之前执行任何Web令牌检查以及其他所有操作 - 如果未包含有效的client-api-key,它可以快速返回401。

我应该以hapi插件的形式执行此操作吗?如果是这样,我如何设置运行的插件的顺序 - 它只是我注册插件的顺序?

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

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

1 个答案:

答案 0 :(得分:2)

您可以在Hapi请求生命周期中为可用的extension function注册extension points

在您的情况下,由于您希望在进行身份验证之前为有效的client-api-key验证请求,因此可以为onRequestonPreAuth事件注册扩展功能。

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();
}