在 swagger 中启用身份验证

问题描述 投票:0回答:3

我创建了一个在.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();
......
asp.net-core asp.net-web-api swagger swagger-ui
3个回答
3
投票

我认为

Scheme
应该是
"bearer"
(小写b)

Scheme = "bearer",

1
投票

您在定义安全定义之前已使用添加授权。 首先定义安全定义然后使用添加授权


0
投票

尝试将 SecuritySchemeType.Http 更改为 SecuritySchemeType.ApiKey。然后,当您单击授权按钮时,请记住输入 Bearer 和空格,然后输入 Token。

编码快乐!

© www.soinside.com 2019 - 2024. All rights reserved.