首页 > 解决方案 > AuthorizationHeader 不再显示在招摇文档中?

问题描述

在我将所有 NuGet 包升级到最新版本后,swagger 授权标头不再显示在 swagger open api 文档中。

发生了什么?

ASP.NET 核心 3.1


我的代码......(这个可以工作,但不再工作)

           startup.cs
           ......
        services.ConfigureSwaggerGen(options =>
        {
            options.OperationFilter<AuthorizationHeaderParameterOperationFilter>();
            options.DescribeAllEnumsAsStrings();
            ....

        });

.

    public class AuthorizationHeaderParameterOperationFilter : IOperationFilter
{
    public void Apply(OpenApiOperation operation, OperationFilterContext context)
    {
        var filterPipeline = context.ApiDescription.ActionDescriptor.FilterDescriptors;
        var isAuthorized = filterPipeline.Select(filterInfo => filterInfo.Filter).Any(filter => filter is AuthorizeFilter);
        var allowAnonymous = filterPipeline.Select(filterInfo => filterInfo.Filter).Any(filter => filter is IAllowAnonymousFilter);

        if (isAuthorized && !allowAnonymous)
        {
            if (operation.Parameters == null)
                operation.Parameters = new List<OpenApiParameter>();

            operation.Parameters.Add(new OpenApiParameter
            {
                Name = "Authorization",
                In = ParameterLocation.Header,
                Description = "access token",
                Required = true,
                Schema = new OpenApiSchema
                {
                    Type = "String",
                    Default = new OpenApiString("Bearer ")
                }
            });
        }

        if (allowAnonymous)
        {
            if (operation.Parameters == null)
                operation.Parameters = new List<OpenApiParameter>();

            operation.Parameters.Add(new OpenApiParameter
            {
                Name = "Authorization",
                In = ParameterLocation.Header,
                Description = "basic authentication",
                Required = true,
                Schema = new OpenApiSchema
                {
                    Type = "String",
                    Default = new OpenApiString("Basic ")
                }
            });
        }
    }

}

标签: c#asp.net-coreswaggeropenapiswashbuckle

解决方案


推荐阅读