You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JWT自动请求简化Swagger身份验证流程

完全可以实现,不需要额外引入第三方工具,目前常用两种实现方案:

方案1:OpenAPI 3.0+ 原生OAuth2密码流配置(推荐)

这是成本最低的方案,只要在你的OpenAPI定义文件中新增对应安全配置即可,配置完成后Swagger UI原生的「Authorize」按钮点击后会自动弹出用户名、密码输入框,用户填写后点击授权,Swagger会自动调用你指定的token接口获取JWT,后续会话内所有请求会自动挂载Authorization: Bearer <token>请求头,完全匹配你提到的需求。
参考配置(YAML格式OpenAPI定义):

components:
  securitySchemes:
    bearerAuth:
      type: oauth2
      flows:
        password:
          tokenUrl: /你的获取token的接口路径 # 例如 /api/user/login
          scopes: {} # 接口没有权限scope要求就留空
security:
  - bearerAuth: []

配置完成后刷新Swagger UI即可生效,不需要修改其他业务代码。

方案2:自定义逻辑适配非标准token接口

如果你的token返回结构不符合OAuth2标准(比如token字段名不是access_token、登录需要传额外自定义参数),可以通过Swagger UI的自定义配置实现:

  • 你可以在Swagger UI初始化代码中插入自定义的用户名、密码输入组件,监听用户提交事件,调用你的登录接口拿到token后存储到浏览器localStorage的swagger_accessToken字段中,Swagger UI会自动读取该字段作为全局token挂载到所有请求
  • 也可以通过requestInterceptor配置项统一处理请求头,示例初始化代码:
SwaggerUIBundle({
  url: "/openapi.json",
  dom_id: '#swagger-ui',
  // 全局请求拦截器
  requestInterceptor: (req) => {
    const customToken = localStorage.getItem('自定义存储token的key')
    if (customToken) {
      req.headers.Authorization = `Bearer ${customToken}`
    }
    return req
  }
})

如果你用的是SpringDoc、FastAPI、NestJS这类封装了Swagger的开发框架,不需要手动编写原生OpenAPI配置,框架都提供了对应的SecurityScheme配置注解,直接配置oauth2密码流参数即可,逻辑和原生配置完全一致。

内容的提问来源于stack exchange,提问作者ParaSwarm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:18:02