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 未授权** 响应。
广告