我在Web API控制器中声明了以下函数。 IIS服务器配置为Web API使用表单身份验证(由于客户限制,无法启用基本身份验证):
[HttpGet]
[Authorize]
[Route("")]
public ContactDTO GetPharmacy()
{
return ToContactDTO(customerContext.CurrentContact);
}
使用此服务作为使用Jquery Ajax($ .ajax(...))从Web浏览器中记录的用户可以正常工作。但是我想使用.Net的HttpClient类做同样的事情。我尝试了以下方法,但没有取得任何成功,总是获得401 Unathorized响应。
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:17200");
AuthenticationHeaderValue authHeader = new AuthenticationHeaderValue("Forms", Convert.ToBase64String(new ASCIIEncoding().GetBytes(String.Format("{0}:{1}", "admin", "123456"))));
client.DefaultRequestHeaders.Authorization = authHeader;
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync("/api/pharmacies").Result;
}
我应该如何使用HttpClient处理表单身份验证?
谢谢。
答案 0 :(得分:1)
对于表单身份验证,您需要提供身份验证cookie。要获取该Cookie,您可以使用approach described there。然后你需要用那个cookie建立你的api请求。如果某些内容无效,您可以随时将您的请求与您从浏览器中创建的原始请求进行比较。