這邊同樣實作幾個 filter 看一下實際執行順序。
asp.net core 有五種 filter 可以使用,其中順序為:
Authorization Filter → Resource Filter → Action Filter → Exception Filter → Result Filter
- Authorization Filter - 通常用來實作權限判斷
- Resource Filter - 通常用來判斷檔案大小,其中這會在 model binding 前執行,可利用
- Action Filter - 所有request都會經過,不管前或後,很適合埋Log
- Exception Filter - 若有發生異常狀況,會走這個 filter
- Result Filter - 最後action 完成後,會經過此 filter
以下嘗試實作相關程式碼
Authorization Filter:實作 IAuthorizationFilter 介面及 OnAuthorization 方法
Resource Filter:實作IResourceFilter 介面及OnResourceExecuted、Executing 方法
Action Filter:繼承 ActionFilterAttribute 類別,覆寫OnActionExecuted、Executing 方法
Exception Filter:繼承 ExceptionFilterAttribute 類別,覆寫OnException 方法
Result Filter:實作 IResourceFilter 介面,及OnResourceExecuted、Executing 方法
以上設計好了之後,接下來需要加入這些 filters,可在ConfigureServices 注入
其中,需要注意的是,加入的順序雖然沒有依照實際執行順序加入,但不影響實際實行流程,如下所示
以上是Global 的加入方式,當然還是會有需要掛 attribute的時候,有機會再補充。
沒有留言:
張貼留言