【朝夕技术专刊】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社區技術專刊》持續更新,歡迎掃碼關注!
總結
以上是生活随笔為你收集整理的【朝夕技术专刊】Core3.1WebApi_Filter详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用有序GUID:提升其在各数据库中作为
- 下一篇: .NET Core开发实战(第18课:日