首页 > 解决方案 > 使用 swagger-ui-express 设置基本身份验证

问题描述

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

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

标签: expressswagger

解决方案


有两件事,第一件事是你的 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/

我使用swagger Jsdoc,对我来说是:

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

推荐阅读