繁体   English   中英

如何在ASP.Net MVC4 api GET请求中阅读基本授权

[英]How do I read the basic authorization in a ASP.Net MVC4 api GET request

我有一个电话应用程序,尝试使用RestSharp从我的Web API获取数据

        private void ButtonTestTap(object sender, EventArgs e)
    {
        var client = new RestClient
        {
            CookieContainer = new CookieContainer(),
            BaseUrl = "http://localhost:21688/api/game",
            Authenticator = new HttpBasicAuthenticator("muhcow", "123456")
        };

        RestRequest request = new RestRequest(Method.GET);
        request.AddParameter("id", 5);

        //request.AddBody(5);
        client.GetAsync<LoginResult>(request, (response, ds) =>
        {
            System.Diagnostics.Debug.WriteLine(response.StatusDescription);
            System.Diagnostics.Debug.WriteLine(response.Data);
            System.Diagnostics.Debug.WriteLine(response.Content);
        });
    }

然后,当我的api服务器收到此GET请求时,要读取Authenticator = new HttpBasicAuthenticator(“ muhcow”,“ 123456”),以便可以验证用户,但不确定如何读取数据。

我有这个

public class GameController : ApiController
    {
        // GET /api/game/5
    public string Get(int id)
    {
        var sdf2 = ControllerContext.Request.Headers.Authorization.Parameter; 

        //return LoginManager.VerifyLogin(loginData);
        return "Some data";
    }

但是sdf2只是有一个奇怪的值“ bXVoY293OjEyMzQ1Ng ==”

该标头是base64编码的。 将Convert.FromBase64String()应用于它,您将看到其中的内容。

Authorization.Parameter是base64编码的。 您可以在此处查看如何对其进行解码的示例http://arcanecode.com/2007/03/21/encoding-strings-to-base64-in-c/

System.Text.Encoding.UTF8.GetString (Convert.FromBase64String (this.ControllerContext 

.Request .Headers.Authorization.Parameter ))

结果是“ muhcow”,“ 123456”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM