Hapi.js - 设置X-Authorization标头

时间:2016-09-29 11:54:55

标签: javascript node.js hapijs

我想在Hapi.js中为我的路线实施X-Authorization。因此,当我发出请求时,我将创建一个X-Auth标头,我希望Hapi在允许执行某些代码之前检查它:

基于来自Hapi documentaiton的这个代码示例,我该如何实现它?

server.route({
method: 'GET',
path: '/hello/{user?}',
handler: function (request, reply) {
    const user = request.params.user ? encodeURIComponent(request.params.user) : 'stranger';
    reply('Hello ' + user + '!');
},
config: {
    description: 'Say hello!',
    notes: 'The user parameter defaults to \'stranger\' if unspecified',
    tags: ['api', 'greeting']
}
});

2 个答案:

答案 0 :(得分:2)

hapi允许您使用request.headers访问路由处理程序中的请求标头,如下所示:

server.route({  
  method: 'GET',
  path: '/hello/{user?}',
  handler: function (request, reply) {
    const headers = request.headers   // <-- get request headers

    const auth = headers['x-authorization']

    // use the auth header value for further processing

    reply({ your: data })
  }
})

如果您需要更多详细信息,可以在how to access request headers in hapi上阅读本教程中的更多内容。

此外,如果您需要检查每个传入请求的X-Authorization标头,create a dedicated plugin会有效。

希望有所帮助!

答案 1 :(得分:1)

您可以使用headers对象的request属性来获取X-Authorization值。但是,它应该是request.headers['x-authorization'](全部小写)。

请参阅http://hapijs.com/api#request-properties了解文件。

“为什么请求标题名称应该是低级的”的原因是:在Node.js中,request对象属于类http.IncomingMessage,其标题名称是低级的。有关详细信息,请参阅https://nodejs.org/dist/latest-v4.x/docs/api/http.html#http_message_headers