【问题标题】:How to include Authorization header using Swagger in .NET Core 6如何在 .NET Core 6 中使用 Swagger 包含授权标头
【发布时间】:2022-10-13 01:09:51
【问题描述】:

我习惯于在旧版本的 .NET Core 中使用 swagger。但是,现在使用 .NET Core 6,我无法使用 swagger 中的 Authorize 按钮添加 Authorization 标头。

我怎么能这样做?

我已经将此添加到 Program.cs 中:

builder.Services.AddSwaggerGen(c =>
{
    c.SwaggerDoc(API_VERSION, new OpenApiInfo
    {
        Title = PROJECT_NAME,
        Version = API_VERSION
    });

    var xmlFile = Assembly.GetExecutingAssembly().GetName().Name + XML_EXTENSION;
    var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);

    c.IncludeXmlComments(xmlPath);

    c.AddSecurityDefinition(SECURITY_TYPE, new OpenApiSecurityScheme
    {
        Description = SECURITY_DESCRIPTION,
        In = ParameterLocation.Header,
        Name = SECURITY_HEADER_NAME,
        Type = SecuritySchemeType.ApiKey,
        Scheme = SECURITY_TYPE
    });

    c.OperationFilter<SecurityRequirementsOperationFilter>();
});

和这个:

app.UseSwagger();
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint(SWAGGERFILE_PATH, PROJECT_NAME + API_VERSION);
    c.RoutePrefix = string.Empty;
});

【问题讨论】:

    标签: .net .net-core swagger swagger-ui


    【解决方案1】:

    我希望现在还为时不晚,如果是的话,答案可能对其他人有所帮助。今天遇到了同样的问题,终于找到了一个西班牙语帖子,为我指明了正确的方向。

    ASP.NET: describiendo una API con OpenAPI y Swagger

    您所要做的就是通过 c.AddSecurityRequirement 添加一个 OpenApiSecurityRequirement,其中包含第二个 OpenApiSecurityScheme。

    就我而言,我们使用 JWT 授权承载,但我认为这也可能对您有用

    这是我的 AddSwaggerGen,现在它的工作方式与在 .NET 5 中的工作方式相同。

    builder?.Services.AddSwaggerGen(c =>
     {
        c.SwaggerDoc("v2", new OpenApiInfo { Title = "Grupompleo.Internal", Version = "v2" });
        // 承载令牌认证
        OpenApiSecurityScheme securityDefinition = new OpenApiSecurityScheme()
        {
            名称=“授权”,
            BearerFormat = "JWT",
            方案=“承载”,
            Description = "指定授权令牌",
            在 = ParameterLocation.Header,
            类型 = SecuritySchemeType.Http,
        };
        c.AddSecurityDefinition("承载", securityDefinition);
            
        //使用.NET6的新代码
        //为了方便阅读,我分成了两部分
        OpenApiSecurityRequirement securityRequirement = new OpenApiSecurityRequirement();
        OpenApiSecurityScheme secondSecurityDefinition = 新的 OpenApiSecurityScheme
        {
            参考 = 新的 OpenApiReference
            {
                类型 = ReferenceType.SecurityScheme,
                Id = "承载者"
            }
        };
        securityRequirement.Add(secondSecurityDefinition, new string[] { });
        c.AddSecurityRequirement(securityRequirement);
        //新代码结束
    });

    将 token 粘贴到 Authorize 按钮中,如果某个控件方法需要授权,Swagger 会将其放在 header 中。

    其他帮助我理解的页面:

    Describing Parameters

    Swagger Authentication 看“OpenAPI 2.0 的变化”

    【讨论】:

      猜你喜欢
      • 2017-09-12
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-08
      • 2021-02-10
      相关资源
      最近更新 更多