我创建了一个在.net6上运行的asp.net core空项目。当我尝试在 swagger 中启用身份验证时遇到一个问题。 Swagger UI 按预期运行,唯一的问题是每当我单击 swagger UI 上的
Authorize
绿色按钮时,它就会弹出,但显示“未知安全定义类型”,并给我两个选项“授权”和“关闭”。它不会显示在可用授权 Bearer(http,Bearer) 下,并允许我输入 jwt 值。我遇到了这篇关于不记名身份验证的文章,但这对我来说没有太大帮助。我在 .AddSwaggerGen()
中遗漏了什么吗?
builder.Services.AddAuthorization();
builder.Services.AddSwaggerGen(options =>
{
options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Scheme = "Bearer",
BearerFormat = "JWT",
In = ParameterLocation.Header,
Name = "Authorization",
Description = "Bearer Authentication with JWT Token",
Type = SecuritySchemeType.Http
});
options.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Id = "Bearer",
Type = ReferenceType.SecurityScheme
}
},
new List<string>()
}
});
});
var app = builder.Build();
app.UseAuthorization();
app.UseAuthentication();
......
我认为
Scheme
应该是"bearer"
(小写b)
Scheme = "bearer",
您在定义安全定义之前已使用添加授权。 首先定义安全定义然后使用添加授权
尝试将 SecuritySchemeType.Http 更改为 SecuritySchemeType.ApiKey。然后,当您单击授权按钮时,请记住输入 Bearer 和空格,然后输入 Token。
编码快乐!