检查 API 控制器方法是否具有授权属性

Check if API controller method has authorize attribute

我正在尝试确定 API 方法是否具有授权属性,虽然我可以很容易地发现使用 MethodInfo,但我似乎无法找到一种方法来处理 [=] 时的检查13=] 在控制器级别设置。

基本上我需要知道控制器或方法是否具有 Authorize 属性。

public class SecurityRequirementsOperationFilter : IOperationFilter
{
    public void Apply(Operation operation, OperationFilterContext context)
    {
        var hasAuthorizeAttribute = context.MethodInfo
            .GetCustomAttributes(true)
            .OfType<AuthorizeAttribute>()
            .Any();

        if (!hasAuthorizeAttribute)
        {   
            operation.Security = new List<IDictionary<string, IEnumerable<string>>>();
        }
    }
}

我设法找到一种方法来查找方法是否具有控制器或方法 Authorize 属性。

var hasAuthAttribute = context.MethodInfo.DeclaringType.GetCustomAttributes(true)
            .Union(context.MethodInfo.GetCustomAttributes(true))
            .OfType<AuthorizeAttribute>()
            .Any();