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

欢迎大家阅读《朝夕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社区技术专刊》持续更新,欢迎扫码关注

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值