HttpResponse消息

问题描述

我正在尝试将webapi和客户端作为拖车进行身份验证 单独的项目启用了cors的单独项目。我有两个 问题,无法从主体对象获取角色,另一方面,如果在webapi用户验证方法信息中包含注释代码(responseMessage.Content = new StringContent(GetRole( )); 返回responseMessage;)。这是代码

```
     $("#btnSubmit").click(function () {
      $.ajax({
        type: 'GET',url: 'http://localhost/TestApi/uservalidation',dataType: 'json',cache: false,beforeSend: function (request) {
            request.setRequestHeader("Authorization","Basic " + 
      btoa($('#txtUsername').val() + ':' + 
            $('#txtPassword').val()));
        },success: function (data,textStatus,xhr) {
            debugger;
            console.log(data);
           
        },error: function (er) {
            debugger;
        },complete: function (jqXHR) {
            debugger;
            if (jqXHR.status === "401") {
                alert("UnAuthorized");
            }
        }

    });
});
 WebApi Code
   [BasicAuthentication]
    [HttpGet]
    [Route("UserValidation")]
    public HttpResponseMessage ValidateUser()
    {
        try
        {
            HttpResponseMessage responseMessage = 
     Request.CreateResponse(HttpStatusCode.OK,Thread.CurrentPrincipal.Identity.Name);
           // responseMessage.Content = new StringContent(GetRole());
            return responseMessage;
            // return Request.CreateResponse(HttpStatusCode.OK,"authenticated");
        }
        catch (System.Exception ex)
        {
            return 
     Request.CreateErrorResponse(HttpStatusCode.InternalServerError,"Error 
      occured 
         while executing GetEmployee");
          // throw ex;
        }
        
        //HttpResponseMessage responseMessage = 
    Request.CreateResponse(HttpStatusCode.OK,Thread.CurrentPrincipal.Identity.Name);
        //responseMessage.Content = new StringContent(GetRole(),Encoding.Unicode);
        //return responseMessage;
    }

  Code for basic authentication
     public override void   OnAuthorization(HttpActionContext 
      actionContext)
    {
        string authenticationToken = string.Empty;
        string decodedAuthenticationToken = string.Empty;
        string[] userNamePassword;
        string[] roleName;
        try
        {
            if (actionContext.Request.Headers.Authorization == null)
            {
                actionContext.Response = 
        actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
            }
            else
            {
                authenticationToken = 
        actionContext.Request.Headers.Authorization.Parameter;
                decodedAuthenticationToken = 
   Encoding.UTF8.GetString(Convert.FromBase64String(authenticationToken));
                userNamePassword = decodedAuthenticationToken.Split(':');
                ValidateUser validateUser = new 
    ValidateUser(userNamePassword[0],userNamePassword[1]);
                if (validateUser.IsUserExits(out string userRoleName))
                {
                    roleName = new string[] { userRoleName };
                    Thread.CurrentPrincipal = new GenericPrincipal(
                   new GenericIdentity(userNamePassword[0]),roleName);
                }
                else
                {
                    actionContext.Response = 
        actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
                }

            }
            base.OnAuthorization(actionContext);
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            authenticationToken = string.Empty;
            decodedAuthenticationToken = string.Empty;
        }
       
    }
       
````

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)