我正在尝试使用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));
答案 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'
}
}
}