Swagger UI AuthHeader 过滤器 - 授权过滤器不在 FilterDescriptors 中

Swagger UI AuthHeader Filter - Authroize Filter not in FilterDescriptors

我为我的 API 设置了一个 Swagger UI,我希望使用 Microsoft.AspNetCore.Authorization[=14 中的 [Authorize] 属性为控制器方法添加授权参数=]

目前我有一个自定义过滤器 class 通过谷歌搜索如何设置它看起来像这样:

public class AuthHeaderFilter : Swashbuckle.AspNetCore.SwaggerGen.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.Insert(0, new OpenApiParameter
            {
                Name = "Authorization",
                In = ParameterLocation.Header,
                Description = "access token",
                Required = true,
                Schema = new OpenApiSchema
                {
                    Type = "String",
                }
            });
        }
    }
}

问题是没有方法获取在 UI 上添加的授权参数。我使用应用了授权属性的方法对此 class 进行了调试,发现问题是从 FilterDescriptors 派生的 filterPipeline 不包含 AuthorizeFilter。是否需要在启动 class 中添加一些东西来处理如何将此属性添加到我缺少的过滤器中?

在 OpenAPI 3.0 中,header 参数改为名为 Authorization are ignored. You need to configure this header as a security scheme