zoukankan      html  css  js  c++  java
  • 关于ASP.NET Web API 客户端的请求报文中添加 Authorization

    当你使用客户端发送请求 Web API 的时候,因为API 有验证,所以你的请求报文中必须有”Authorization“,那么就需要手动添加了!

    HttpClient client = new HttpClient();
    client.BaseAddress = new Uri("http://localhost:9014/");
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    //设置请求  Authorization: Basic eXN0Omp1bGk=      Base64 加密的     (yst:juli)
    //System.Net.Http.Headers.AuthenticationHeaderValue authValue = new AuthenticationHeaderValue("Basic", "eXN0Omp1bGk=");
    //13e6ba0ee6f8559324efe6a3c51909f1      自定义加密的
    System.Net.Http.Headers.AuthenticationHeaderValue authValue = new AuthenticationHeaderValue("ystJS", "13e6ba0ee6f8559324efe6a3c51909f1");
    client.DefaultRequestHeaders.Authorization = authValue;       

    服务器端进行验证

    public class ReqAuthorizeAttribute:System.Web.Http.AuthorizeAttribute
    {
            /// <summary>
            /// 进行验证
            /// </summary>
            /// <param name="actionContext"></param>
            public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
            {
                if (actionContext.Request.Headers.Authorization != null)
                {
                    //获取请求的 认证信息(解密)  13e6ba0ee6f8559324efe6a3c51909f1
                    string authPa = (actionContext.Request.Headers.Authorization.Parameter).Decrypt();
    
                    string userInfo = "yst:juli";
                    //判断认证信息是否正确
                    if (string.Equals(authPa, userInfo))
                    {
                        IsAuthorized(actionContext);
                    }
                    else
                    {
                        HandleUnauthorizedRequest(actionContext);
                    }
                }
                else
                {
                    HandleUnauthorizedRequest(actionContext);
                }
            }
    
            /// <summary>
            /// 验证不通过 返回401
            /// </summary>
            /// <param name="actionContext"></param>
            protected override void HandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext)
            {
                var challengeMsg = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.Unauthorized);
                challengeMsg.Headers.Add("WWW-Authenticate", "Basic");
                throw new System.Web.Http.HttpResponseException(challengeMsg);
            }
    
    }
    View Code
  • 相关阅读:
    js自定义回调函数
    python:sql建表语句转换为json
    简单list转化为tree结构
    JSP中页面定时刷新
    struts2中<s:select/>标签的运用详解
    Redis 的 Sentinel
    redis持久化(persistence)
    java验证身份证合理性
    js 里面的键盘事件对应的键码
    Struts2中使用OGNL表达式语言访问静态方法和静态属性
  • 原文地址:https://www.cnblogs.com/yougmi/p/3978958.html
Copyright © 2011-2022 走看看