我在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方法吗?
答案 0 :(得分:0)
不应该仅在属性时调用OnAuthorization方法 被添加到类或方法中?
部分是的。但是你需要知道ASP.Net MVC有一个全局过滤器的概念。当您不需要重复自己时,可以使用全局过滤器(打破DRY原则)。它可以帮助您集中和配置需要为所有控制器执行的过滤器。
这一行
GlobalFilters.Filters.Add(new CustomAuthorizeAttribute());
正在全局添加过滤器,因此即使您不将过滤器属性应用于控制器类或操作,也可以调用它。