簡體   English   中英

如何在 ASP.NET Core MVC 中讀取使用用戶名和密碼保護的 API

[英]How to read API secured with username and password in ASP.NET Core MVC

我有一個使用用戶名和密碼保護的 API。 我正在使用 ASP.NET Core MVC,但我正在使用 JavaScript 閱讀 API。 現在我的組織使用用戶名和密碼保護了這個 API,我想知道如何使用 C# 使用這些用戶名和密碼讀取 API,因為它比 JavaScript 更安全。 我可以在控制器的 Post 請求中添加哪些代碼。 如果你能指導我實現這一目標。

我找到了這種方式,但它在 ASP.NET Core 中不受支持:

WebRequest req = WebRequest.Create(@"https://sub.domain.com/api/operations?param=value&param2=value");
req.Method = "GET";
req.Headers["Authorization"] = "Basic " + 
Convert.ToBase64String(Encoding.Default.GetBytes("username:password"));
//req.Credentials = new NetworkCredential("username", "password");
HttpWebResponse resp = req.GetResponse() as HttpWebResponse;

對於 net core 最好使用 http 客戶端

using (var client = new HttpClient())
{
    var baseAddress = "https://sub.domain.com";

    var api = "/api/operations?param=value&param2=value";
    client.BaseAddress = new Uri(baseAddress);
    var contentType = new MediaTypeWithQualityHeaderValue("application/json");
    client.DefaultRequestHeaders.Accept.Add(contentType);

    var authenticationString = $"{username}:{password}";
    var base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(authenticationString));
    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", base64EncodedAuthenticationString);
            
    var response = await client.GetAsync(api);
    var statusCode = response.StatusCode.ToString();
    if (response.IsSuccessStatusCode)
    {
        var stringData = await response.Content.ReadAsStringAsync();
        var result = JsonConvert.DeserializeObject<object>(stringData);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM