目录
过滤器
MVC常用filter
ActionFilterAttribute,AuthorizeAttribute,HandleErrorAttribute。
WebAPI常用filter
ActionFilterAttribute,AuthorizeAttribute,ExceptionFilterAttribute,ExceptionHaner(发生异常后可指定处理异常的条件)
ActionFilterAttribute
- ActionFilterAttribute实现了IActionFilter接口,IResultFilter接口。
- IActionFilter接口包含了OnActionExecuted方法,OnActionExecuting方法。
- IResultFilter接口包含了OnResultExecuted方法,OnResultExecuting方法。
- IAtionFilter可以在方法前后做日志的记录。
- IResultFilter可以在渲染视图和结果的时候,做结果的统一处理。比如JSON格式的统一处理,结果生 成前后扩展。
IResourceFilter
IResourceFilter可以对资源进行缓存。
IAlwaysRunResultFilter
IAlwaysRunResultFilter可以对响应的结果进行补充。
过滤器的处理流程
- 先经过AuthorizeFilter进行鉴权,看看Token是否有效。
- 然后到AuthorizationHandler进行授权验证,看看有没有访问该接口的权限。
- 如果鉴权失败了会触发JwtBearerEvents的OnChallenge委托,如果授权失败会触发OnForbidden委托。
- 然后到IResourceFilter进行资源缓存,如果从缓存里面获取到了数据就直接返回结果。
- 然后到ActionFilterAttribute。
- 进入Action之前先执行OnActionExecting方法。
- 然后执行Intercept。
- 在生成结果之前执行OnResultExecting方法。
- 在生成结果之后执行OnResultExected方法。
- 然后到IAlwaysRunResultFilter,可以对响应的结果进行补充。
- 然后再执行Intercept。
- 最后执行OnActionExected方法。
- 中间如果出现异常会到ExecptionFilterAttribute,执行OnException方法。
拦截器
全局拦截
接口拦截
反射查看权限
AOP
区别
- 过滤器关注的是HTTP的整个请求。
- 拦截器关注的是方法本身的调用,比如记录一下方法的名称,方法的入参。