欢迎大家阅读《朝夕Net社区技术专刊》第4期
我们致力于.NetCore的推广和落地,为更好的帮助大家学习,方便分享干货,特创此刊!很高兴你能成为忠实读者,文末福利不要错过哦!
01
PART
CoreWebApi五大Filter
1. AuthorizeAttribute:权限Filter;
2.IResourceFilter资源Filte;
3.IExceptionFilter/IAsyncExceptionFilter异常Filter;
4.ActionFilterAttribute, IActionFilter, IAsyncActionFilter 行为Filter
5.ResultFilterAttribute, IResultFilter, IAsyncResultFilter 结果Filter
02
PART
CoreFilter比较于.AspNetMVCFilter:
Asp.Net MVC的Filter一共只有三个:ActionFilterAttribute/AuthorizeAttribute/ExceptionFilter,这三个Filter都是进入到Asp.NetMVC框架的Filter;
Core下的Filter新增了资源ResourceFilter;而且执行顺序也有所改变;同时Core环境因为已经全程支持了IOC容器;所以在Filter中也支持了传入参数;以下两个图比较Asp.NetMVCFilter和CoreWebApiFilter的区别:
Asp.NetMVCFilter:可联系助教老师(微信:ZhaoxiNet007)获取代码测试执行;
.NetCoreFilter
03
PART
CoreFilter执行顺序:
在事例代码中分别建立了:可联系助教老师(微信:ZhaoxiNet007)获取代码测试执行;
CustomActionFilterAttribute:
CustomAuthorizeAttribute:
CustomExceptionFilterAttribute:
CustomResourceFilterAttribute:
CustomResultFilterAttribute:
五个Filter;分别标记在FilterController控制器的ShowFilter方法;
此处没有注册CustomAuthorizeAttribute,权限部分在Core中做了大更新;后续出主题文档,此处仅注册CustomActionFilterAttribute、CustomExceptionFilterAttribute、CustomResourceFilterAttribute、CustomResultFilterAttribute,调试结果按照顺序如下图:
图1:测试请求Api:ShowFilter以后,先进入到CustomResourceFilterAttribute中的OnResourceExecuting方法;
图2:再进入到控制器构造函数;说明在构造控制器之前就进入到ResourceFilter中去了;
图3:再进入到CustomActionFilterAttribute中的OnActionExecuting方法;
图4:再进入到FilterControllerK控制器的ShowFilter方法;
图5:再进入到CustomActionFilterAttribute中的OnActionExecuted方法;
图6:再进入到CustomResourceFilterAttribute的OnResourceExecuted方法;
以上六张图详解了Core中的Filter执行顺序:是一个俄罗斯套娃。
关于Core中新增Filter的职责分析:
1. AuthorizationFilter权限Filter:此处虽未注册使用,但是他是最先执行的,并且没有进入到MVC内部;这是Core的大更新,也是大亮点。如果系统需要做授权,那在请求执行方法的时候,应该先判断权限,如果没有权限,后续的动作没有必要进行,更没有必要进入到MVC中去;直接就返回了;代码少走了“冤枉路”,这是一个提高性能的表现;此次文档中没有重于介绍哪几种授权方式,因为在Core中的授权比较复杂,后续有专题文档提供;可联系助教老师(微信:ZhaoxiNet007)获取;
2.ResourceFilter资源Filter,在授权执行后执行,有OnResourceExecuting方法,和OnResourceExecuted方法,此处适合做缓存;可能同学会疑问,如果做缓存在AuthorizationFilter权限Filter中也能实现呢;确实是可以的,不过框架是为了专人做专事,在授权成功以后,专门提供一个Filter来做缓存;
下期预告
【朝夕Net社区技术专刊】第5期:
Filter的各种注册方式,以及如何完成Filter的依赖注入
本期福利
如果看完本文让你有所收获,
别忘转发扩散,和更多人分享学习的快乐!
扫码关注公众号朝夕Net社区回复”第四期“
即可获取本期配套教学视频及课件!
往期内容:
1【朝夕Net社区技术专刊】Core3.1 WebApi集群实战专题---WebApi环境搭建运行发布部署篇
2【朝夕Net社区技术专刊】Core3.1 WebApi集群实战专题-Corre3.1WebApi配置集成日志/配置Swagger
3【朝夕技术专刊】WebApi部署多服务器配置Nginx负载均衡
《朝夕Net社区技术专刊》持续更新,欢迎扫码关注!