如何在hapi-swagger中使用apiKey进行身份验证?

时间:2015-11-20 13:24:53

标签: node.js swagger swagger-ui hapijs

我有一个节点项目&我正在使用hapi框架以及joi& amp;高致病性禽流感,招摇。它的工作正常&它正确生成API文档。 现在,只有当我提供apiKey作为查询参数时,我才需要 http://localhost:5000/documentation url。基本上我想要身份验证,这样没有apiKey的人就无法访问 http://localhost:5000/documentation

我试过的代码 -

var swaggerOptions = {
  apiVersion: '2.0',
  auth: 'apiKey',
  authorizations: {
    apiKey : {
      type: 'apiKey',
      passAs: 'query',
      keyname: 'secret_password'
    }
  }
}

var server = new Hapi.Server()
server.connection({port: 5000})

server.route(<router>) //router contains all the routes

const scheme = function (server, options) {
  return {
    authenticate: function (request, reply) {
      if (request.query['secret_password'] !== 'XXX') {
        return reply(Boom.unauthorized('credentials failed'))
      }
      return reply.continue({credentials: {user: 'developer'}})
    }
  }
}
server.auth.scheme('custom', scheme)

server.register([inert, vision, {register:hapiSwagger, options:swaggerOptions}], function (err) {
      server.auth.strategy('apiKey', 'custom')
      server.start(callback)
    })

在运行时,它会在secret_password出错时正确显示,但是当它正确时,它会显示一个swagger.io链接的单词swagger。

我搜索过但没有得到任何关于此的信息或示例。 我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

v3.0.0-rc1中存在身份验证的已知问题此版本是正在开发的新版本的早期版本候选版本。如果你回到最新的稳定版本v2.2.3认证应该工作。