.net core中的哪些過濾器


前言

書承接上文,咱們上回說到,.net core中各種日志框架, 今天我講講.net core中的內置過濾器吧!

1.什么是過濾器?

ASP.NET Core中的篩選器允許代碼在請求處理管道中的特定階段之前或之后運行,從用戶發送一個請求,到控制器處理完,在返回給用戶,在這個過程,請求會經歷多個中間件,所謂的過濾器,就是在請求過程中,攔截請求,對請求進行處理,例如:權限認證,異常處理等等。如下圖所示:

2.過濾器的分類

  • Authorization過濾器:這個在所有的過濾器中最先運行,主要功能是檢測當前用戶是否權限訪問,如果沒有權限就直接短路(終止請求,返回HTTP:401),不會先下執行。這里需要特別注意一下,因為授權過濾器是最先執行,如果它有異常需要小心處理,因為它不會向下執行,所以不會到Exception過濾器,這點需要注意。
  • Resource過濾器:這個過濾器是緊跟着Authorization過濾器后面的過濾器,OnResourceExecuting在模型綁定之前運行代碼,在管道的其余部分完成之后,OnResourceExecuted運行代碼。
  • Action過濾器:在調用動作方法之前和之后立即運行代碼,可以監控並修改傳遞給操作的參數,同時也能監控並修改返回的結果。(微軟說在Razor Pages不支持這個過濾器)
  • Exception過濾器:將全局策略應用於在寫入響應主體之前發生的未處理異常,監聽全局的異常處理。
  • Result過濾器:在執行操作結果之前和之后立即運行代碼,緊跟着Action過濾器,對action返回的結果可以進行數據格式轉換。

2.1過濾器的執行順序:


Authorization-->Resource-->Action-->Exception-->Result

2.2客戶端發送一個請求到服務端的過程

3.默認執行順序

先是執行全局,再到控制器,最后到具體的方法,然后返回到控制器,最后到全局。這里說的執行順序,是過濾器在不同作用域的執行順序。

4.為什么要使用過濾器?

過濾器的分類我己經介紹完畢,想必大家對過濾器有初步的了解,知道它是什么,能做哪些事,你肯定會有疑問,我們為什么要使用過濾器?

答:當我們客戶端向服務端發送請求的時候,如果此時我需要驗證用戶是否登錄,如果不使用過濾器的方式去驗證,那在我們每一個發送請求之前,我們都需要去服務端認證當前是否有用戶登錄,當前的用戶是否擁有訪問權限,這樣需要把同一份驗證代碼,反復復制,這不僅會增加工作量,一旦有新需求,改動很麻煩,如果使用過濾器去認證,這樣只需要修改服務端的代碼,就可以達到一勞永逸,即使以后有修改,只需要修改服務端的邏輯即可。

5.總結

至此,我們已經了解過濾器是什么(what),為什么需要使用過濾器(why),過濾器在什么時候用(when),接下來幾篇就開始講講如何使用(how)。


免責聲明!

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



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