【朝夕技术专刊】Core3.1WebApi_Filter详解
歡迎大家閱讀《朝夕Net社區(qū)技術(shù)專刊》第4期
我們致力于.NetCore的推廣和落地,為更好的幫助大家學(xué)習(xí),方便分享干貨,特創(chuàng)此刊!很高興你能成為忠實讀者,文末福利不要錯過哦!
01
PART
CoreWebApi五大Filter
1.?AuthorizeAttribute:權(quán)限Filter;
2.IResourceFilter資源Filte;
3.IExceptionFilter/IAsyncExceptionFilter異常Filter;
4.ActionFilterAttribute, IActionFilter, IAsyncActionFilter?行為Filter
5.ResultFilterAttribute, IResultFilter, IAsyncResultFilter 結(jié)果Filter
02
PART
CoreFilter比較于.AspNetMVCFilter:
Asp.Net MVC的Filter一共只有三個:ActionFilterAttribute/AuthorizeAttribute/ExceptionFilter,這三個Filter都是進(jìn)入到Asp.NetMVC框架的Filter;
Core下的Filter新增了資源ResourceFilter;而且執(zhí)行順序也有所改變;同時Core環(huán)境因為已經(jīng)全程支持了IOC容器;所以在Filter中也支持了傳入?yún)?shù);以下兩個圖比較Asp.NetMVCFilter和CoreWebApiFilter的區(qū)別:
Asp.NetMVCFilter:可聯(lián)系助教老師(微信:ZhaoxiNet007)獲取代碼測試執(zhí)行;
.NetCoreFilter
03
PART
CoreFilter執(zhí)行順序:
在事例代碼中分別建立了:可聯(lián)系助教老師(微信:ZhaoxiNet007)獲取代碼測試執(zhí)行;
CustomActionFilterAttribute:
CustomAuthorizeAttribute:
CustomExceptionFilterAttribute:
CustomResourceFilterAttribute:
CustomResultFilterAttribute:
五個Filter;分別標(biāo)記在FilterController控制器的ShowFilter方法;
此處沒有注冊CustomAuthorizeAttribute,權(quán)限部分在Core中做了大更新;后續(xù)出主題文檔,此處僅注冊CustomActionFilterAttribute、CustomExceptionFilterAttribute、CustomResourceFilterAttribute、CustomResultFilterAttribute,調(diào)試結(jié)果按照順序如下圖:
圖1:測試請求Api:ShowFilter以后,先進(jìn)入到CustomResourceFilterAttribute中的OnResourceExecuting方法;
圖2:再進(jìn)入到控制器構(gòu)造函數(shù);說明在構(gòu)造控制器之前就進(jìn)入到ResourceFilter中去了;
圖3:再進(jìn)入到CustomActionFilterAttribute中的OnActionExecuting方法;
圖4:再進(jìn)入到FilterControllerK控制器的ShowFilter方法;
圖5:再進(jìn)入到CustomActionFilterAttribute中的OnActionExecuted方法;
圖6:再進(jìn)入到CustomResourceFilterAttribute的OnResourceExecuted方法;
以上六張圖詳解了Core中的Filter執(zhí)行順序:是一個俄羅斯套娃。
關(guān)于Core中新增Filter的職責(zé)分析:
1. AuthorizationFilter權(quán)限Filter:此處雖未注冊使用,但是他是最先執(zhí)行的,并且沒有進(jìn)入到MVC內(nèi)部;這是Core的大更新,也是大亮點。如果系統(tǒng)需要做授權(quán),那在請求執(zhí)行方法的時候,應(yīng)該先判斷權(quán)限,如果沒有權(quán)限,后續(xù)的動作沒有必要進(jìn)行,更沒有必要進(jìn)入到MVC中去;直接就返回了;代碼少走了“冤枉路”,這是一個提高性能的表現(xiàn);此次文檔中沒有重于介紹哪幾種授權(quán)方式,因為在Core中的授權(quán)比較復(fù)雜,后續(xù)有專題文檔提供;可聯(lián)系助教老師(微信:ZhaoxiNet007)獲取;
2.ResourceFilter資源Filter,在授權(quán)執(zhí)行后執(zhí)行,有OnResourceExecuting方法,和OnResourceExecuted方法,此處適合做緩存;可能同學(xué)會疑問,如果做緩存在AuthorizationFilter權(quán)限Filter中也能實現(xiàn)呢;確實是可以的,不過框架是為了專人做專事,在授權(quán)成功以后,專門提供一個Filter來做緩存;
下期預(yù)告
【朝夕Net社區(qū)技術(shù)專刊】第5期:
Filter的各種注冊方式,以及如何完成Filter的依賴注入
本期福利
如果看完本文讓你有所收獲,
別忘轉(zhuǎn)發(fā)擴(kuò)散,和更多人分享學(xué)習(xí)的快樂!
掃碼關(guān)注公眾號朝夕Net社區(qū)回復(fù)”第四期“
即可獲取本期配套教學(xué)視頻及課件!
往期內(nèi)容:
1【朝夕Net社區(qū)技術(shù)專刊】Core3.1 WebApi集群實戰(zhàn)專題---WebApi環(huán)境搭建運行發(fā)布部署篇
2【朝夕Net社區(qū)技術(shù)專刊】Core3.1 WebApi集群實戰(zhàn)專題-Corre3.1WebApi配置集成日志/配置Swagger
3【朝夕技術(shù)專刊】WebApi部署多服務(wù)器配置Nginx負(fù)載均衡
《朝夕Net社區(qū)技術(shù)專刊》持續(xù)更新,歡迎掃碼關(guān)注!
總結(jié)
以上是生活随笔為你收集整理的【朝夕技术专刊】Core3.1WebApi_Filter详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用有序GUID:提升其在各数据库中作为
- 下一篇: .NET Core开发实战(第18课:日