大概說下在asp.net core 中使用自定義ActionFilter的兩種方式,首先假如我需要自定義一個ActionFilter,名字叫做"AdministratorsOperationAttribute",該Filter的作用就是用戶訪問我的API時,驗證該用戶所屬的角色是否具有訪問某個接口的權限。具體的創建過程就省略了,下面說下注入方式:
方法1. 在Startup的 ConfigureServices中注入DependencyFilterProvider
services.TryAddTransient<IFilterProvider,DependencyFilterProvider>();
然后注入自己定義的filter
services.AddScoped<IFilterMetadata, AdministratorsOperationAttribute>();
這里的DependencyFilterProvider的作用應該就是自動去尋找自定義的filter並幫你注入到系統中。
方法2. 通過AddMvc中的options 方式注入:
services.AddMvc(options => { options.Filters.Add(typeof(AdministratorsOperationAttribute)); }
這種方式有一個缺點就是如果自定義的filter比較多的話 寫起來比較麻煩,這種情況還是推薦使用方法方法1來注入自己的filter。
