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+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告