【问题标题】:Make a base route filter with hapijs使用 hapijs 制作基本路由过滤器
【发布时间】:2017-10-25 02:13:51
【问题描述】:

我是 nodejs 的新手,我正在使用 hapijs 制作一个 api 来处理来自 mi 站点的一些功能,我希望能够制作一个像 api/* 这样的基本 url 并制作所有其他以 api/ 开头的 url通过一些验证,但只做一次,这就是我目前所拥有的:

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

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

【问题讨论】:

  • 你看过tutorial on Authentication吗?它描述了如何设置一个所有路由都可以用于身份验证的函数。
  • 是的,我在发布此内容后做了...。通过创建身份验证模式和身份验证策略,您可以为所有您想要的路由设置身份验证,而不是对您不需要的路由进行身份验证...谢谢回复!
  • 太棒了!你应该在这里发布答案并接受它!
  • 一有机会我会做的,谢谢!

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


【解决方案1】:

你必须在预处理器钩子上使用

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 帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-25
    • 2015-11-04
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 2023-04-03
    • 2014-12-14
    • 2015-03-08
    相关资源
    最近更新 更多