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

ASP.NET Core 8中Swagger JWT认证遇特殊JSON返回:Bearer undefined问题

解决Swagger OAuth2密码流适配嵌套JWT返回的问题

问题根源

Swagger UI默认会从OAuth2 token接口的顶层JSON字段读取access_token和token_type,但你的Login接口把这些核心字段嵌套在data对象里,导致Swagger无法正确解析token数据,进而出现「Bearer undefined」的授权头错误,以及端点显示锁定的问题。

解决方案:自定义Swagger Token解析逻辑

在ASP.NET Core 8的Program.cs中,通过注入自定义JavaScript脚本,修改Swagger UI的token响应处理逻辑,让它从data字段里提取所需的token信息:

  1. 配置SwaggerUI时引入自定义脚本
    在AddSwaggerUI方法中添加自定义脚本注入,同时保留原有的OAuth2配置:

    builder.Services.AddSwaggerUI(options =>
    {
        options.OAuthUsePasswordGrant();
        options.OAuthClientId("your-client-id"); // 替换为你的实际客户端ID
        options.OAuthClientSecret("your-client-secret"); // 若有客户端密钥则替换
    
        // 注入自定义JS脚本,覆盖默认token解析逻辑
        options.InjectJavascript("/swagger-custom.js");
    });
    
  2. 创建自定义脚本文件wwwroot/swagger-custom.js
    在项目的wwwroot目录下新建该文件,写入以下代码重写token解析逻辑:

    // 覆盖Swagger UI默认的token获取后处理逻辑
    window.ui = window.ui || {};
    ui.initOAuth = function(config) {
        const originalFetchToken = ui.authActions.fetchToken;
        ui.authActions.fetchToken = function(url, opts) {
            return originalFetchToken(url, opts).then(response => {
                // 从嵌套的data字段中提取token信息
                if (response.data) {
                    return {
                        access_token: response.data.access_token,
                        token_type: response.data.token_type || 'Bearer',
                        expires_in: response.data.expires_in,
                        refresh_token: response.data.refresh_token
                    };
                }
                return response;
            });
        };
    };
    
  3. 确保静态文件中间件顺序正确
    要让Swagger能加载到自定义脚本,需在Program.cs的管道配置中,将静态文件中间件放在Swagger中间件之前:

    app.UseStaticFiles(); // 必须在UseSwaggerUI之前配置
    app.UseSwagger();
    app.UseSwaggerUI();
    

验证效果

启动项目后,在Swagger UI中使用密码流登录,此时Swagger会自动从data字段解析access_token和token_type,调用接口时会正确携带Bearer {token}格式的授权头,端点的锁定状态也会解除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:22:35