ASP.NET Core 6中Swagger无法发送/识别Bearer Token问题
Swagger UI未携带Bearer Token调用接口的解决方案
问题核心:Postman可手动添加Token请求头,但Swagger UI默认不会自动注入Bearer Token认证信息,需在Swagger配置中显式启用JWT认证支持。
配置步骤(Security API和Product API均需执行)
1. 在Swagger生成配置中添加JWT认证定义
修改Program.cs(.NET 6+)或Startup.cs(.NET 5及更早版本)中的Swagger配置代码:
builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "你的API名称", Version = "v1" }); // 定义Bearer Token认证方案 var bearerScheme = new OpenApiSecurityScheme { Name = "Authorization", Type = SecuritySchemeType.Http, Scheme = "bearer", BearerFormat = "JWT", In = ParameterLocation.Header, Description = "输入格式:Bearer {你的Token}", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }; c.AddSecurityDefinition("Bearer", bearerScheme); // 为所有接口添加认证要求 c.AddSecurityRequirement(new OpenApiSecurityRequirement { { bearerScheme, Array.Empty<string>() } }); });
2. 确保中间件顺序正确
在管道配置中,Swagger中间件必须放在认证、授权中间件之后:
app.UseAuthentication(); app.UseAuthorization(); // 启用Swagger及UI app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "API V1"); });
3. 验证效果
重启API后,打开Swagger UI,点击右上角的Authorize按钮,输入Bearer {你的Token}并保存,之后调用接口时Swagger会自动在请求头中携带Token。
内容的提问来源于stack exchange,提问作者Wilson Narro
相关产品推荐
相关产品推荐

