我需要在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?
}
答案 0 :(得分:2)
您可以在Hapi请求生命周期中为可用的extension function注册extension points。
在您的情况下,由于您希望在进行身份验证之前为有效的client-api-key验证请求,因此可以为onRequest
或onPreAuth
事件注册扩展功能。
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();
}