【问题标题】:Check if API controller method has authorize attribute检查 API 控制器方法是否具有授权属性
【发布时间】:2019-10-29 20:46:11
【问题描述】:

我正在尝试确定 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>>>();
        }
    }
}

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      相关资源
      最近更新 更多