【朝夕技术专刊】Core3.1WebApi_Filter详解

欢迎大家阅读《朝夕Net社区技术专刊》第4期

我们致力于.NetCore的推广和落地,为更好的帮助大家学习,方便分享干货,特创此刊!很高兴你能成为忠实读者,文末福利不要错过哦!

01

PART

CoreWebApi五大Filter

【朝夕技术专刊】Core3.1WebApi_Filter详解_第1张图片

1. AuthorizeAttribute:权限Filter;
2.IResourceFilter资源Filte;
3.IExceptionFilter/IAsyncExceptionFilter异常Filter;
4.ActionFilterAttribute, IActionFilter, IAsyncActionFilter 行为Filter
5.ResultFilterAttribute, IResultFilter, IAsyncResultFilter 结果Filter

02

PART

CoreFilter比较于.AspNetMVCFilter:

【朝夕技术专刊】Core3.1WebApi_Filter详解_第2张图片

Asp.Net MVC的Filter一共只有三个:ActionFilterAttribute/AuthorizeAttribute/ExceptionFilter,这三个Filter都是进入到Asp.NetMVC框架的Filter;

Core下的Filter新增了资源ResourceFilter;而且执行顺序也有所改变;同时Core环境因为已经全程支持了IOC容器;所以在Filter中也支持了传入参数;以下两个图比较Asp.NetMVCFilter和CoreWebApiFilter的区别:

Asp.NetMVCFilter:可联系助教老师(微信:ZhaoxiNet007)获取代码测试执行;

【朝夕技术专刊】Core3.1WebApi_Filter详解_第3张图片

.NetCoreFilter

【朝夕技术专刊】Core3.1WebApi_Filter详解_第4张图片

03

PART

CoreFilter执行顺序:

在事例代码中分别建立了:可联系助教老师(微信:ZhaoxiNet007)获取代码测试执行;

CustomActionFilterAttribute:

【朝夕技术专刊】Core3.1WebApi_Filter详解_第5张图片

CustomAuthorizeAttribute:

【朝夕技术专刊】Core3.1WebApi_Filter详解_第6张图片

CustomExceptionFilterAttribute:

【朝夕技术专刊】Core3.1WebApi_Filter详解_第7张图片

CustomResourceFilterAttribute:

【朝夕技术专刊】Core3.1WebApi_Filter详解_第8张图片

CustomResultFilterAttribute:

【朝夕技术专刊】Core3.1WebApi_Filter详解_第9张图片

五个Filter;分别标记在FilterController控制器的ShowFilter方法;

【朝夕技术专刊】Core3.1WebApi_Filter详解_第10张图片

此处没有注册CustomAuthorizeAttribute,权限部分在Core中做了大更新;后续出主题文档,此处仅注册CustomActionFilterAttribute、CustomExceptionFilterAttribute、CustomResourceFilterAttribute、CustomResultFilterAttribute,调试结果按照顺序如下图:

【朝夕技术专刊】Core3.1WebApi_Filter详解_第11张图片

图1:测试请求Api:ShowFilter以后,先进入到CustomResourceFilterAttribute中的OnResourceExecuting方法;

【朝夕技术专刊】Core3.1WebApi_Filter详解_第12张图片

图2:再进入到控制器构造函数;说明在构造控制器之前就进入到ResourceFilter中去了;

【朝夕技术专刊】Core3.1WebApi_Filter详解_第13张图片

图3:再进入到CustomActionFilterAttribute中的OnActionExecuting方法;

【朝夕技术专刊】Core3.1WebApi_Filter详解_第14张图片

图4:再进入到FilterControllerK控制器的ShowFilter方法;

【朝夕技术专刊】Core3.1WebApi_Filter详解_第15张图片

图5:再进入到CustomActionFilterAttribute中的OnActionExecuted方法;

【朝夕技术专刊】Core3.1WebApi_Filter详解_第16张图片

图6:再进入到CustomResourceFilterAttribute的OnResourceExecuted方法;

以上六张图详解了Core中的Filter执行顺序:是一个俄罗斯套娃。

【朝夕技术专刊】Core3.1WebApi_Filter详解_第17张图片【朝夕技术专刊】Core3.1WebApi_Filter详解_第18张图片

关于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社区技术专刊》持续更新,欢迎扫码关注

【朝夕技术专刊】Core3.1WebApi_Filter详解_第19张图片

【朝夕技术专刊】Core3.1WebApi_Filter详解_第20张图片

你可能感兴趣的:(【朝夕技术专刊】Core3.1WebApi_Filter详解)