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

时间:2019-10-29 20:46:11

标签: asp.net-web-api authorize-attribute

我正在尝试确定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 :(得分:0)

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

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