express - 使用 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));
解决方案
有两件事,第一件事是你的 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'
}
}
}
推荐阅读
- node.js - 在反应中使用节点模块
- javascript - 从闭包访问实例变量
- apache - 使用根 htaccess 文件中的 htaccess/htpasswd 错误保护目录?
- python - 如何获取 Generic[T] 子类的成员变量的真实声明类型
- javascript - 尝试从 webBrowser c# 更改类值
- python - 为什么numpy比纯python慢?
- benchmarking - 我在测试模块的循环数时,每次测试的结果都大相径庭。
- javascript - 为什么数组以字符串形式返回
- c - 函数的多重定义
- angular - 如何为 ng2-smart-table 添加新的自定义按钮