[Web API]以Attribute加上Header验证
来源:互联网 发布:python教程3.6.2 编辑:程序博客网 时间:2024/06/14 01:58
建立新FilterAttribute继承AuthorizationFilterAttribute,覆写OnAuthorization拦截传入的HttpActionContext内容判断是否有传入指定的资料
public override void OnAuthorization(HttpActionContext filterContext){ var identity = FetchAuthHeader(filterContext); //取得資料內容 if (identity == null) { ChallengeAuthRequest(filterContext); //回傳錯誤訊息 return; } var genericPrincipal = new GenericPrincipal(identity, null); //針對目前連線的使用者做授權 Thread.CurrentPrincipal = genericPrincipal; if (!OnAuthorizeUser(identity.Name, identity.Password, filterContext)) //驗證 { ChallengeAuthRequest(filterContext); return; } base.OnAuthorization(filterContext);}
解析HttpActionContext内容取得指定的资料
protected virtual BasicAuthenticationIdentity FetchAuthHeader(HttpActionContext filterContext){ string customer = ""; string pwd = ""; IEnumerable<string> authRequest = filterContext.Request.Headers.GetValues("指定的資料名稱"); IEnumerable<string> authRequest2 = filterContext.Request.Headers.GetValues("指定的資料名稱2"); try { customer = authRequest.FirstOrDefault(); pwd = authRequest2.FirstOrDefault(); } catch { } return new BasicAuthenticationIdentity(customer, pwd);}
验证解析出来的资料是否符合需求
protected override bool OnAuthorizeUser(string username, string password, HttpActionContext actionContext){ if (username == "驗證資料" && password == "驗證碼") return true; return false;}
建立验证失败时要回传的讯息
private static void ChallengeAuthRequest(HttpActionContext filterContext){ var dnsHost = filterContext.Request.RequestUri.DnsSafeHost; filterContext.Response = filterContext.Request.CreateResponse(HttpStatusCode.Unauthorized); filterContext.Response.Headers.Add("WWW-Authenticate", string.Format("validate failed", dnsHost));}
于WebApiConfig.cs中注册新增的Filter
public static class WebApiConfig{ public static void Register(HttpConfiguration config) { GlobalConfiguration.Configuration.Filters.Add(new WebApi.Filters.ApiAuthenticationFilter()); }}
最后在需要验证的API加上该Filter即可
[WebApi.Filters.ApiAuthenticationFilter]public object QueryApi(string pInput){ return null; }
转载自:AlenWu的程式学习笔记
阅读全文
0 0
- [Web API]以Attribute加上Header验证
- 基于Attribute的Web API路由设置
- 基于Attribute的Web API路由设置
- 在 Web 应用程序中使用 SharePoint API 以避免页面验证错误
- 读取WEB API验证参数
- 为JTable加上Row Header.
- 为JTable加上Row Header.
- 联网请求统一加上header
- 给表单加上验证
- Web API 实战之 授权验证
- ASP.NET Web API之FluentValidation验证
- Attribute自定义特性验证
- 取所有的Header、Attribute及Parameter
- 创建以 API 为中心的 Web 应用
- 创建以 API 为中心的 Web 应用(续)
- 创建以 API 为中心的 Web 应用
- 创建以 API 为中心的 Web 应用
- 创建以 API 为中心的 Web 应用
- struts 拦截器 使用
- 单引号+双引号:传参的转义问题
- Hibernate第一个程序
- Struts2 上传图片
- bootstrap弹窗里面再弹窗
- [Web API]以Attribute加上Header验证
- 尼姆博奕HDU 5795 A Simple Nim(SG打表找规律)
- Java冒泡排序示例
- 按天统计数据,如果当天没有记录,则统计为0
- ssh 的 整合方案
- 通过CodeIgniter快速开发Web应用(一)
- oracle jdbc 连接字符串
- myeclipse配置多个tomcat
- mongodb导出数据导入mysql