2020年3月29日 星期日

Asp.Net Core Filters

asp.net core 同樣有 filter,可以幫助在 action 執行前或後加入一些判斷。
這邊同樣實作幾個 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的時候,有機會再補充。

沒有留言:

張貼留言