如何在ASP.Net中发送用于Web请求集的身份validation标头

我正在开发ASP.net应用程序,它使用ASP.Net Web API来使用REST服务。 我正在尝试为我的网站使用基本身份validation。 完成基本身份validation后,我计划将其与SSL一起使用。

目前在登录按钮上单击我正在使用用户名和密码的Base64编码发送Auth标头,如下所示:

string responseData = string.Empty; string authToken = string.Empty; string loginInstance = url; // Create request. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(loginInstance); request.Method = "POST"; request.ContentType = "application/json"; request.CookieContainer = new CookieContainer(); String username = txtUserName.Text; String password = txtPassword.Text; String encoded = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(username + ":" + password)); request.Headers.Add("Authorization", "Basic " + encoded); request.ContentLength = 0; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8); String resultData = reader.ReadToEnd(); bool result = false; result = Convert.ToBoolean(resultData); return result; 

我假设我需要向所有需要安全并通过身份validation的web api请求发送身份validation标头。

有没有办法将身份validation标头附加到我发送的每个请求甚至一组请求? 请注意:大多数Web API请求都是通过JQuery调用的。

如果这不是推荐的实施方法,请告诉我。

问候,

Abhilash

你试过这样的:

  WebRequest request = (HttpWebRequest)WebRequest.Create("https://yoururl"); request.Headers.Add(HttpRequestHeader.Authorization, "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("user:password"))); 

使用消息处理程序在asp.net web api中进行基本的http认证。 http://www.piotrwalat.net/basic-http-authentication-in-asp-net-web-api-using-message-handlers/

您可以尝试使用以下代码替换“request.Headers.Add(”授权“,”基本“+编码);” 。

  request.Headers.Add(HttpRequestHeader.Authorization, "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("user:password"))); 

我相信你可以添加

request.PreAuthenticare = true

您可以查找HttpWebRequest.Credentials属性。

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(loginInstance); request.Credentials = CredentialCache.DefaultCredentials; 

上面的示例包含当前登录用户的凭据。

“Credentials属性可以是NetworkCredential,在这种情况下,NetworkCredential对象中包含的用户,密码和域信息用于validation请求,或者它可以是CredentialCache”。

MSDN参考