Swagger 授权 Header 在 ASP.NET 核心项目中不可见
Swagger Authorization Header not visible in ASP.NET Core project
我已经为我的 asp.net 核心项目包含了 swagger 包(Swashbuckle.AspNetCore)。 swagger 包是最新的 4.0.1 版本。我尝试使用以下代码启用 swagger ui 中的授权按钮:
// Register the Swagger generator
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "Sample API", Description = "Swagger Sample API", Version = "v1" });
c.AddSecurityDefinition("Bearer", new ApiKeyScheme { In = "header", Description = "Please Enter Authentication Token", Name = "Authorization", Type = "SampleApiKey" });
c.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>> {
{ "Bearer", Enumerable.Empty<string>() },
});
});
按钮可以在 swagger 中看到 ui 但是当我点击按钮时,它显示如下错误:
谁能指出我这里的问题是什么?
你的行应该是:
c.AddSecurityDefinition("Bearer", new ApiKeyScheme {
In = "header",
Description = "Please Enter Authentication Token",
Name = "Authorization", Type = "apiKey"
});
因为 Type 正在 Swashbuckle 内部转换为策略模式。
可能的值为:
- 基本
- api密钥
- oauth2
可能您可以在 Swashbuckle repo 中提交错误,因为除非它可以被覆盖,否则它可能是一个枚举,以免引起混淆。
我已经为我的 asp.net 核心项目包含了 swagger 包(Swashbuckle.AspNetCore)。 swagger 包是最新的 4.0.1 版本。我尝试使用以下代码启用 swagger ui 中的授权按钮:
// Register the Swagger generator
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "Sample API", Description = "Swagger Sample API", Version = "v1" });
c.AddSecurityDefinition("Bearer", new ApiKeyScheme { In = "header", Description = "Please Enter Authentication Token", Name = "Authorization", Type = "SampleApiKey" });
c.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>> {
{ "Bearer", Enumerable.Empty<string>() },
});
});
按钮可以在 swagger 中看到 ui 但是当我点击按钮时,它显示如下错误:
谁能指出我这里的问题是什么?
你的行应该是:
c.AddSecurityDefinition("Bearer", new ApiKeyScheme {
In = "header",
Description = "Please Enter Authentication Token",
Name = "Authorization", Type = "apiKey"
});
因为 Type 正在 Swashbuckle 内部转换为策略模式。 可能的值为:
- 基本
- api密钥
- oauth2
可能您可以在 Swashbuckle repo 中提交错误,因为除非它可以被覆盖,否则它可能是一个枚举,以免引起混淆。