NET5 AOP 5個Filter 使用總結


NET5 AOP 5個Filter 使用總結

1. AOP介紹:
AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程。
AOP到底是干什么的呢?可以在不修改之前的代碼為基礎,可以動態的增加新功能;

2.AOP的實例:
AuthorizationFilter 鑒權授權:角色,策略授權
ResourceFilter 資源
ExceptionFilter 異常
ActionFilter 方法
ResultFilter 結果
匿名Filter


AuthorizationFilter 鑒權授權:
在app.UseRouting()之后,app.UseEndPotints()之前增加鑒權授權
鑒權:app.UseAuthentication()檢查用戶是否登錄
授權:app.UseAuthorization()授權 檢測是否有權限訪問后面的頁面功能


ResourceFilter 資源:
實現IResourceFilter接口:實現方法:OnResourceExecuting();OnResourceExecuted(),標記在Action上,在view渲染視圖執行前和后添加功能的AOP
用path做緩存key,緩存了第2次不會執行到控制器

ExceptionFilter 異常:
自定義exceptonFilter實現IExceptionFilter

ActionFilter 方法:
1.繼承Attribute,實現IActionFilter接口:實現方法:OnActionExecuting();OnActionExecuted(),標記在Action上,在action執行前和后添加功能的AOP
2.繼承ActionFilterAttribute,復寫父類方法實現在action執行前和后添加功能
3.日志功能的應該;

ResultFilter 結果
實現IResultFilter接口:實現方法:OnResultExecuting();OnResultExecuted(),標記在Action上,在view渲染視圖執行前和后添加功能的AOP
中英文的使用,緩存的使用

Filter的多種注冊
1.[CustomActionFilter]---Fitler必須有無參數構造函數
2.[TypeFilter(typeof(CustomActionFilterAttribute))],可以沒有無參數構造函數,可以支持依賴注入
3.[ServiceFilter(typeof(CustomActionFilterAttribute))],可以沒有無參數構造函數,可以支持依賴注
入,但是必須要注冊服務

執行順序1如下:
1.控制器實例化
2.全局注冊的Filter-OnActionExecuting
3.控制器注冊的Filter-OnActionExecuting
4.Actioin注冊的Filter-OnActionExecuting
5.執行Action內部的邏輯算計
services.AddMvc(option=> {
option.Filters.Add<CustomActionFilterAttribute>(); //全局注冊:
});
6.Action注冊的Filter-OnActionExecuted
7.控制器注冊的Filter-OnActionExecuted
8.全局注冊的Filter-OnActionExecuted

執行順序2:
middleware
authorization filter
resource filter
exception filter
model binding
action filter
result filter


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM