在 swagger 中为 web api 中的特定版本添加不记名令牌选项

use*_*202 8 c# asp.net-web-api swagger swagger-ui

我在 Web API 应用程序中使用 Swagger。我有多个版本的 API,但我只想将不记名令牌选项应用于版本 2。两个版本都没有身份验证。这是我的代码:

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
    c.SwaggerDoc("v2", new OpenApiInfo { Title = "My API", Version = "v2" });

    c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
    {
        In = ParameterLocation.Header,
        Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
        Name = "Authorization",
        Type = SecuritySchemeType.ApiKey,         
    });
});
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 在此处输入图片说明

Kah*_*azi 3

您可以安装NSwag.AspNetCore并为不同版本添加不同选项。

services.AddSwaggerDocument(a =>
{
    a.DocumentName = "v1";
    a.Version = "v1";
});

services.AddSwaggerDocument(a =>
{
    a.DocumentName = "v2";
    a.Version = "v2";
    a.AddSecurity("bearer", new NSwag.OpenApiSecurityScheme
    {
        Description = "jwt",
        In = NSwag.OpenApiSecurityApiKeyLocation.Header,
        Type = NSwag.OpenApiSecuritySchemeType.ApiKey,
        Scheme = "bearer"
    });
});
Run Code Online (Sandbox Code Playgroud)
app.UseOpenApi();
app.UseSwaggerUi3();
Run Code Online (Sandbox Code Playgroud)

您可以在Microsoft Docs中阅读有关它的更多信息。