C# ASP.NET WebAPI 中有哪些不同型別的過濾器?


過濾器用於在 WebApi 框架請求處理的不同級別注入額外的邏輯。過濾器提供了一種處理橫切關注點(日誌記錄、授權和快取)的方法。過濾器可以透過宣告式或程式設計方式應用於操作方法或控制器。以下是 Web API C# 中的過濾器型別。

身份驗證過濾器

身份驗證過濾器幫助我們驗證使用者詳情。在身份驗證過濾器中,我們編寫用於檢查使用者真實性的邏輯。

授權過濾器

授權過濾器負責檢查使用者訪問許可權。它們實現框架中的 IAuthorizationFilter 介面。

操作過濾器

操作過濾器用於在操作方法執行之前或之後新增額外邏輯。OnActionExecuting 和 OnActionExecuted 方法用於在執行操作方法之前和之後新增我們的邏輯。

異常過濾器

當控制器方法丟擲任何未處理的異常(不是 HttpResponseException 異常)時,將執行異常過濾器。HttpResponseException 型別是一個特例,因為它專門用於返回 HTTP 響應。

覆蓋過濾器

覆蓋過濾器用於為單個操作方法自定義其他過濾器的行為。有時會有這樣的需求:無論我們有什麼過濾器,都需要覆蓋。比如,我們在控制器級別應用了過濾器,但在控制器內有一個操作不想使用該過濾器,那麼我們可以使用過濾器的覆蓋版本。

過濾器通常以以下三種方式應用。

  • 在控制器級別

  • 在 ActionMethod 級別

  • 在全域性級別 (WebApi.Config.cs)

讓我們來看一個授權過濾器的實現示例以及它的工作方式。

示例

using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class DemoController : ApiController{
      [Authorize]
      public IHttpActionResult Get(){
         return Ok();
      }
   }
}

由於我們在操作方法上添加了授權屬性,因此應使用適當的授權方式(如 bearer 令牌、API 金鑰、OAuth 等)來訪問操作方法。未經授權的訪問將導致顯示如下所示的 **401 未授權** 響應。


更新於:2020年8月19日

11K+ 次瀏覽

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.