我为我的API使用了Swagger UI设置,并希望使用[Authorize]
中的Microsoft.AspNetCore.Authorization
属性为控制器方法添加Authorization参数>
目前,我通过谷歌搜索有一个自定义过滤器类设置,如下所示:
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上添加授权参数。我使用对它们应用了authorize属性的方法调试了此类,发现问题是从FilterDescriptors派生的filterPipeline不包含AuthorizeFilter。是否需要将某些东西添加到启动类中,以处理如何将此属性添加到我所缺少的过滤器中?
我为我的API安装了Swagger UI设置,并希望使用Microsoft.AspNetCore.Authorization的[Authorize]属性为控制器方法添加Authorization参数,目前我有一个...