博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebApi的调用-3.Basic验证
阅读量:4684 次
发布时间:2019-06-09

本文共 3082 字,大约阅读时间需要 10 分钟。

Basic基本验证

webapi里的特性

///     ///  Basic验证       ///     /// 
/// ///
public class BasicAuthorizeAttibute : AuthorizeAttribute { public override void OnAuthorization(HttpActionContext actionContext) { var authorization = actionContext.Request.Headers.Authorization; //HTTP标头的Authorization值 //ActionDescriptor方法上,ActionDescriptor.ControllerDescriptor 类上 //有[AllowAnonymousAttribute] 的情况下 if (actionContext.ActionDescriptor.GetCustomAttributes
(true).Count != 0 || actionContext.ActionDescriptor.ControllerDescriptor.GetCustomAttributes
(true).Count != 0) { base.OnAuthorization(actionContext); } else if (authorization != null && authorization.Parameter != null) { //用户逻辑验证 if (ValidateTicket(authorization.Parameter)) { base.IsAuthorized(actionContext); } else { this.HandleUnauthorizedRequest(actionContext); } } else { this.HandleUnauthorizedRequest(actionContext); } } ///
/// 验证用户逻辑 /// ///
/// /// /// private bool ValidateTicket(string encryptTicket) { // var strTicket = FormsAuthentication.Decrypt(encryptTicket.Remove(encryptTicket.Length - 1).Remove(0, 1)); var strTicket = FormsAuthentication.Decrypt(encryptTicket); return string.Equals(strTicket.UserData, string.Format("{0}&{1}", "admin", "123")); } }

获取ticket

[AllowAnonymous]        [HttpGet]        public HttpResponseMessage Login(string account, string password)        {            Model.User user = new User();            if (account == "admin" && password == "123")            {                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(0, account, DateTime.Now,                           DateTime.Now.AddHours(1), true, string.Format("{0}&{1}", account, password),                           FormsAuthentication.FormsCookiePath);                return Success(user = new User() { name = account, pass = password, ticket = FormsAuthentication.Encrypt(ticket) });            }            else            {                return Msg("登录失败");            }        }

MVC里面请求头(后台请求)

public string GetApi(string method, string queryString)        {            var result = ApiHelper.Instance.RequestApi(method, queryString, GetApiHeader());            return result;        }private WebHeaderCollection GetApiHeader()        {            string key = string.Format(GlobalVar.UserTiketCacheKey);            var result = CacheHelper.CacheReader(key);            WebHeaderCollection header = new WebHeaderCollection();            header.Add(HttpRequestHeader.Authorization, "BasicAuth " + result);            return header;        }

转载于:https://www.cnblogs.com/tangge/p/7599281.html

你可能感兴趣的文章
js性能优化-事件委托(2)
查看>>
Determine File Output Location
查看>>
51NOD 1068 Bash游戏 V3
查看>>
级联。。。
查看>>
socketserver用法列子
查看>>
网站链接被微信屏蔽拦截了怎么办?VJump帮你解除屏蔽
查看>>
[操作系统实验lab2]实验报告
查看>>
monkeyrunner学习笔记(1)- monkeyrunner入门
查看>>
插入排序(C#实现)
查看>>
eclipse中maven读取Excel文件内容
查看>>
table强制不换行
查看>>
从基础知识到重写Spring的Bean工厂中学习java的工厂模式
查看>>
MAC版Eclipse的常用快捷键
查看>>
PHP输出当前进程所有变量 / 常量 / 模块 / 函数 / 类
查看>>
getAttribute和getParameter的区别
查看>>
Margin Loss 损失函数的设计
查看>>
gerrit-git
查看>>
CreditCompany
查看>>
jmeter之beanshell
查看>>
类似选项卡竖向排版的jquery图文同步切换效果
查看>>