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

.Net Core 2.1 Web API:Swagger无法发送JWT Bearer令牌求助

解决Swagger无法发送JWT Bearer令牌的问题

看起来你已经配置了SecurityDefinition,但Swagger还需要额外的配置才能主动携带令牌请求接口。我来帮你补全缺失的步骤:

首先,在你的ConfigureServices方法里,给Swagger添加SecurityRequirement,告诉它哪些接口需要使用Bearer认证;然后在SwaggerUI的配置里启用令牌输入的UI组件,这样你就能在Swagger页面里输入令牌并自动携带到请求中了。

下面是完整的Swagger配置代码,你可以对比自己的代码补充缺失的部分:

public void ConfigureServices(IServiceCollection services)
{
    // 其他服务配置(比如AddMvc、AddAuthentication等)...

    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new Info { Title = "你的API名称", Version = "v1" });

        // 你已经添加的SecurityDefinition
        c.AddSecurityDefinition("Bearer", new ApiKeyScheme
        {
            In = "header",
            Description = "请输入格式为 `Bearer {你的令牌}` 的认证信息",
            Name = "Authorization",
            Type = "apiKey"
        });

        // 新增:添加SecurityRequirement,指定接口需要Bearer认证(默认覆盖所有接口)
        c.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>>
        {
            { "Bearer", new string[] { } }
        });
    });
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    // 其他中间件配置(比如UseAuthentication、UseMvc等)...

    app.UseSwagger();
    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "你的API V1");
        // 新增:启用SwaggerUI的Bearer令牌输入功能
        c.EnableBearerTokenAuth();
    });
}

补充几个关键细节:

  • 确保需要认证的控制器/Action上标记了[Authorize]属性,这样Swagger才会在对应接口上显示认证锁图标,提示需要携带令牌。
  • 输入令牌时严格按照Bearer {你的令牌}格式填写(注意Bearer和令牌之间有空格),比如Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...。
  • 如果只有部分接口需要认证,可以在不需要的接口上标记[AllowAnonymous],或者调整AddSecurityRequirement的规则来灵活控制范围。

配置完成后,你在Swagger页面顶部会看到一个"Authorize"按钮,点击后输入令牌,后续的接口请求就会自动带上Bearer令牌了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:55:58