在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Ø 前言 我们知道 ASP.NET Web API 过滤器,也是属于消息处理机制中的一部分。正因如此,我们经常使用它来完成对请求的授权验证、参数验证,以及请求的 Log 记录,程序异常捕获等。
1. 常用的四大过滤器 Ø ASP.NET Web API 2 中的所有过滤器位于 System.Web.Http.dll 中的 System.Web.Http.Filters 命名空间中,继承关系如下: 1. AuthenticationFilter:身份证验证过滤器,必须实现 IAuthenticationFilter 接口。微软推出了一套身份验证组件(ASP.NET Identity)就是采用了该过滤实现,该组件位于 System.Web.Http.Owin.dll 程序集,主要使用 System.Web.Http.HostAuthenticationFilter 过滤器,可参考:https://www.cnblogs.com/yidianfeng/p/7765984.html 2. AuthorizationFilter:授权过滤器,必须继承于 AuthorizationFilterAttribute 类,或实现 IAuthorizationFilter 接口。 3. ActionFilter:动作过滤器,必须继承于 ActionFilterAttribute 类,或者实现 IActionFilter 接口。 4. ExceptionFilter:异常过滤器,必须继承于 ExceptionFilterAttribute 类,或者实现 IExceptionFilter 接口。
Ø 注意:因为 Web API 与 MVC 中很多过滤器名称都相同,但过滤器位于的程序集和命名空间是不同的。MVC 中的过滤器位于 System.Web.Mvc.dll 中的 System.Web.Mvc 命名空间,这不能搞混了!
Ø 首先,我们来看下过滤器的执行顺序 1) 图中描述了4种过滤器的执行顺序,而每个执行过程中发生异常,都会被异常过滤器捕获。 2) 每当一个请求“进来”时,可能存在的三种响应结果:401,无访问权限,500,请求发生异常,200,请求成功。
Ø 过滤器的用法 1) 创建过滤器 1. AuthenticationFilter(身份验证过滤器) 它是最先执行的过滤器,一般用于对访问者的身份认证等。 /// <summary> /// 身份验证过滤器特性。 /// </summary> public class CustomAuthenticationFilterAttribute : System.Web.Http.Filters.FilterAttribute, System.Web.Http.Filters.IAuthenticationFilter { public System.Threading.Tasks.Task AuthenticateAsync(System.Web.Http.Filters.HttpAuthenticationContext context, System.Threading.CancellationToken cancellationToken) { //这里完成身份验证... return Task.FromResult(0); }
public System.Threading.Tasks.Task ChallengeAsync(System.Web.Http.Filters.HttpAuthenticationChallengeContext context, System.Threading.CancellationToken cancellationToken) { return Task.FromResult(0); } }
2. AuthorizationFilter(授权过滤器) 授权过滤器通常用于控制接口访问权限,只有当访问权限满足时,才允许访问程序中的接口。用于提高程序的安全性,防止程序被恶意篡改。通常可以使用 Basic 认证、签名认证等。
|
请发表评论