Проверьте, имеет ли метод контроллера API атрибут авторизации - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь определить, имеет ли метод API атрибут авторизации, и, хотя я легко могу найти, что с помощью MethodInfo, я не могу найти способ обработать проверку, когда Authorize установлен на уровне контроллера.

В основном мне нужно знать, имеет ли контроллер или метод атрибут 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>>>();
        }
    }
}

1 Ответ

0 голосов
/ 31 октября 2019

Мне удалось найти способ узнать, имеет ли метод атрибут контроллера или Authorize.

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