小白开学Asp.Net Core 《五》
小白開學Asp.Net Core《五》
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? —— 使用.Net Core MVC?Filter
?
一、簡介
今天在項目(https://github.com/AjuPrince/Aju.Carefree)做登陸權限時,用到了Filter,現將Filer的使用做以下記錄。
二、Filter 簡介
Filter俗稱過濾器,它的作用是在Action方法執行前后做一些處理。它在Mvc Action 管道中運行,所以也可以叫做過濾器管道。
? ? ? ? ? ? ? ? ? ? ? ? ?
三、Filter的執行順序
Authorization Filter ->??Resource Filter ->?Action Filter ->?Exception Filter ->?Result Filter
在.Net Core MVC 中新增了異步過濾器,如果提供了異步和同步過濾器,那么將執行異步過濾器,同步過濾器將不會執行。?
? ? ? ? ? ? ??
(圖片來自?John Wu?的博客)
Authorization Filter
Authorization Filter ?是這幾種Filter中優先級最高的,通常用于驗證請求的合法性,俗稱 授權過濾器。
Resource Filter
Resource Filter 是第二個被執行的,Model Binding之前執行,通常用于對Model加工處理,俗稱 資源過濾器
Action Filter?
Action Filter 這個過濾器是最常用到的過濾器,在調用Action方法前后執行,在Model Binding之后執行,在使用上沒什么特別注意的,俗稱 方法過濾器
Exception Filter
Exception Filter 常常用于應用程序執行異常是記錄日志
Result Filter
Result Filter 當Action 執行完成后,最終會執行的Filter,常常用于處理 Action 執行結果
?四、Filter類型在Filter管道中的交互方式
五、Filter 的注冊
Filter 的注冊有兩種方式,一種是全局注冊,另一種的區域注冊
全局注冊是在Startup.cs 中進行注冊。注冊后用于所有的Request
區域注冊是在Controller或者Action 上面加上[TypeFilter(type)]
六、項目案例(區域)
定義ActionFilter:
public class HandleLoginAsyncAttribute : IAsyncActionFilter { public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { context.HttpContext.Session.TryGetValue("Aju_Prince_OperatorProvider_20190708", out var result); if (result == null) { context.Result = new RedirectResult("/Login/Index"); return; } await next.Invoke(); } }
使用:
? ? ? ??
七、項目案例(全局)
Filter定義
注冊
? ??
參考:
ASP.NET Core Filters
ASP.NET Core 教學 - Filters
總結
以上是生活随笔為你收集整理的小白开学Asp.Net Core 《五》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GitHub的CI实践(xUnit /
- 下一篇: 高性能微服务网关.NETCore客户端K