如何阅读 API 在 ASP.NET 核心 MVC 中使用用户名和密码保护
How to read API secured with username and password in ASP.NET Core MVC
我有一个 API 受用户名和密码保护。我正在使用 ASP.NET 核心 MVC,但我正在使用 JavaScript 阅读 API。现在我的组织使用用户名和密码保护此 API,我想知道如何使用 C# 使用这些用户名和密码读取 API,因为它比 JavaScript 更安全。我可以在控制器中的 Post 请求中添加什么代码。如果你能指导我实现这一目标的方法。
我找到了这种方式,但 ASP.NET 不支持它 Core:
WebRequest req = WebRequest.Create(@"https://sub.domain.com/api/operations?param=value¶m2=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¶m2=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);
}
}
更新
如果您不想使用 http 客户端但也使用 ajax,只需使用上面的代码创建一个操作并从 ajax.
调用此操作
我有一个 API 受用户名和密码保护。我正在使用 ASP.NET 核心 MVC,但我正在使用 JavaScript 阅读 API。现在我的组织使用用户名和密码保护此 API,我想知道如何使用 C# 使用这些用户名和密码读取 API,因为它比 JavaScript 更安全。我可以在控制器中的 Post 请求中添加什么代码。如果你能指导我实现这一目标的方法。
我找到了这种方式,但 ASP.NET 不支持它 Core:
WebRequest req = WebRequest.Create(@"https://sub.domain.com/api/operations?param=value¶m2=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¶m2=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);
}
}
更新
如果您不想使用 http 客户端但也使用 ajax,只需使用上面的代码创建一个操作并从 ajax.
调用此操作