使用hapijs制作基本路线过滤器

时间:2017-05-24 16:00:59

标签: node.js url routing hapijs base-url

我是nodejs的新手,我正在制作一个带有hapijs的api来处理来自mi网站的一些功能,我希望能够创建一个像api / *这样的基本网址,并让其他所有网址都是从api / pass开始通过一些验证,但只做一次,这是我到目前为止:

server.route([
            {
                method: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
                path: "/api/*",
                handler: function(request, reply){
                    is_authorized = auth(request.raw.req.headers['Authorization']);
                    if(!is_authorized){
                        reply(response.generate_json(null, 'no autorizado', 'UNAUTHORIZED')).code(401);
                    }
                }
            }
        ]);

但它不起作用,当我调用任何其他网址如api / sockets /无论它刚刚通过,即使它没有被授权....有什么方法我可以在hapijs中实现这一点??

1 个答案:

答案 0 :(得分:1)

你必须在prehandler hook上使用

server.ext('onPreHandler', (request, reply) => {
if(request.path.startsWith("/api/"))
{
    is_authorized = auth(request.raw.req.headers['Authorization']);
    if(!is_authorized)
    {
        reply(response.generate_json(null, 'no autorizado', 'UNAUTHORIZED')).code(401);
    }
    else
    {
      return reply.continue();
    }
}
else
{
return reply.continue();
}
});

如果您需要任何进一步的info.happy帮助