WebApi自定义Filter实例

it2025-07-18  5

要实现的功能是在接收到用户请求时,请求头(headers)中需要包含token,并且token的值等于123456才算效验通过,可以调用接口,否则提示401(未通过身份认证)。

 

第一步:自定义一个过滤器,实现接口IAuthorizationFilter

public class MyAuthorFilter : IAuthorizationFilter { public bool AllowMultiple => throw new NotImplementedException(); public async Task<HttpResponseMessage> ExecuteAuthorizationFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func<Task<HttpResponseMessage>> continuation) { IEnumerable<string> tokens; if (!actionContext.Request.Headers.TryGetValues("token", out tokens)) { return new HttpResponseMessage(System.Net.HttpStatusCode.Unauthorized); } string token = tokens.First(); if (token == "123456") { return await continuation(); } else { return new HttpResponseMessage(System.Net.HttpStatusCode.Unauthorized); } } }

第二步:在WebApiConfig.cs配置文件中把新加的过滤器注册一下

//注册全局Filter config.Filters.Add(new MyAuthorFilter());

 

前端代码如下:

这时候刷新前端页面,可以看到后台服务已经进入,先执行了MyAuthorFilter中的代码,当效验通过时再执行控制器中的代码。实现了身份认证功能。

 程序执行过程如下:

 

上面是程序验证通过的情况,下面再看下如果token中的值不是123456的情况:

如果token的值为abc,那么程序就会返回401的异常,控制器中的方法不会执行。 

最新回复(0)