ASP.NET Core中的过滤器

过滤器作用

  • 作用于mvc中
  • 可在mvc之前、之后添加业务逻辑
  • 可以到处复用,避免代码重复

过滤器的执行流程

 异常过滤器只能捕获模型绑定、动作过滤器、动作执行的异常

过滤器的种类

过滤器 继承接口(同步、异步) 调用 说明
授权过滤器 IAuthorizationFilter、IAsyncAuthorizationFilte OnAuthorization 请求时进行授权,只调用一次
资源过滤器 IResourceFilter、IAsyncResourceFilter

OnResourceExecuting

OnResourceExecuted

请求时调用

返回时调用

异常过滤器 IExceptionFilter、IAsyncExceptionFilter OnException 捕获模型绑定、动作过滤器、动作执行的异常,有异常时执行一次
动作滤器 IActionFilter、IAsyncActionFilter

OnActionExecuting

OnActionExecuted

请求时调用

返回时调用

结果过滤器 IResultFilter、IAsyncResultFilter

OnResultExecuting

OnResultExecuted

请求时调用

返回时调用

使用

同步版本

异步版本

 

过滤器的应用

作用于全局

 public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews(options =>
   {
        //options.Filters.Add(new MyResourceFilter());
        //options.Filters.Add(typeof(MyResourceFilter));
        options.Filters.Add<MyResourceFilter>();
    });
}

作用于Controller

作用于Action

//只需要在Controller和Action上添加就行
[MyResourceFilter]
原文地址:https://www.cnblogs.com/-zzc/p/14533884.html