即使未使用属性,也会调用自定义授权属性

时间:2018-06-04 15:49:17

标签: c# asp.net-mvc

我在ASP.Net MVC 5中遇到以下问题。即使我没有在我的代码中的任何位置添加该属性,也会调用OnAuthorization方法。

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
    public class CustomAuthorizeAttribute : AuthorizeAttribute
    {
        public override void OnAuthorization(AuthorizationContext filterContext)
        {

        }
    }

我在Global.asax下添加了过滤器:

AreaRegistration.RegisterAllAreas();
GlobalFilters.Filters.Add(new CustomAuthorizeAttribute());

只有在将属性添加到类或方法时才应调用OnAuthorization方法吗?

1 个答案:

答案 0 :(得分:0)

  

不应该仅在属性时调用OnAuthorization方法   被添加到类或方法中?

部分是的。但是你需要知道ASP.Net MVC有一个全局过滤器的概念。当您不需要重复自己时,可以使用全局过滤器(打破DRY原则)。它可以帮助您集中和配置需要为所有控制器执行的过滤器。

这一行

GlobalFilters.Filters.Add(new CustomAuthorizeAttribute());

正在全局添加过滤器,因此即使您不将过滤器属性应用于控制器类或操作,也可以调用它。