使用swagger-ui-express设置基本身份验证

时间:2019-02-01 01:42:40

标签: express swagger

我正在尝试使用swagger-ui-express设置基本身份验证。我按照文档中的指示传递了一个选项对象,但它不起作用。 我不能说是因为我的options对象的结构是错误的,还是因为其他原因。提前非常感谢您!

const express = require('express');
const router = express.Router();
const swaggerUi = require('swagger-ui-express');
const dashboardDocument = require('../dashboardAPI.json');

var options = {
  swaggerOptions: {
    authAction: {
      Basic: {
        name: "user1",
        schema: {
          type:"application/json",
          in: "header",
          name: "Authorization",
        },
        value: "Basic bG9naW46cGFzc3dvcmQ="
      }
    }
  }
}

router.use("/", swaggerUi.serve);
router.get("/", swaggerUi.setup(dashboardDocument, options));

1 个答案:

答案 0 :(得分:1)

有两件事,第一件事是您的swaggerUi选项。

我认为您在按键方面犯了一些错误。

const swaggerUiOptions = {
  swaggerOptions: {
    basicAuth: {
      name:   'Authorization',
      schema: {
        type: 'basic',
        in:   'header'
      },
      value:  'Basic <user:password>'
    }
  }
}
server.use('/v1/swagger', swaggerUi.serve, swaggerUi.setup(swaggerSpec, swaggerUiOptions))

第二个是您的招摇定义,您必须添加securitySchemes才能使用基本授权并将其用于路由定义中。 https://swagger.io/docs/specification/authentication/

我用招摇的Jsdoc,对我来说是

components: {
  securitySchemes: {
    basicAuth: {
      type:   'http',
      scheme: 'basic'
    }
  }
}