swagger-ui-express配置persistAuthorization不生效问题咨询
解决方案
- 第一步:升级swagger-ui-express到最新版本
绝大多数失效场景是因为安装的swagger-ui-express版本过低,内置的Swagger UI内核版本低于3.37.0,本身不支持persistAuthorization配置项。执行以下命令升级即可:npm install swagger-ui-express@latest - 第二步:验证配置结构
你当前的配置结构是合规的,升级版本后即可生效,可参考以下标准完整可运行代码调整:const express = require("express"); const app = express(); app.listen(3000, () => console.log("服务启动在3000端口")); const swaggerUi = require('swagger-ui-express'); const options = { swaggerOptions: { persistAuthorization: true } }; const swaggerDocument = { "swagger": "2.0", "info": { "title": "Simple API overview", "version": "v2" }, securityDefinitions: { BearerAuth: { type: 'apiKey', in: 'header', name: 'Authorization' } }, // 可选配置:全局开启BearerAuth授权,所有接口默认携带授权头 security: [ { BearerAuth: [] } ] }; app.use('/doc', swaggerUi.serve, swaggerUi.setup(swaggerDocument, options)); - 特殊场景兜底方案
如果升级后仍然无法生效,可以通过注入自定义JS手动强制开启持久化配置,修改options参数如下:const options = { swaggerOptions: { persistAuthorization: true }, customJsStr: ` window.onload = function() { ui = SwaggerUIBundle({ ...window.ui.getConfigs(), persistAuthorization: true }) } ` };
配置完成后重启服务,清除浏览器缓存后重新访问/doc路径,填写授权信息后刷新页面,授权信息就会自动保存在浏览器localStorage中不会丢失。
内容的提问来源于stack exchange,提问作者sgaleta
相关产品推荐
相关产品推荐

