通过 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();
}
我需要在对 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();
}