Я успешно зарегистрировался на сайте MVC 4 Web API и получил. ASPXAUTH Set-Cookie таким образом:WebAPI и аутентификация форм CookieContainer
private void Login()
{
var client = new RestClient("http://QQQQ/MobileAPI");
client.CookieContainer = new CookieContainer();
var request = new RestRequest {Resource = "/api/account/Logon", Method = Method.POST};
request.AddObject(new {Username = "john", Password = "secret"});
var responseLogin = client.Execute(request);
if (responseLogin.StatusCode == HttpStatusCode.OK)
ProcessData(client.CookieContainer);
}
Как вы можете видеть, что я передать CookieContainer функции ProcessData()
в то обработать RESTful команду, которая сидит позади [AUTHORIZE]
контроллера.
ProcessData() вызов завершается с HttpStatusCode.Unauthorized
Вопрос: Я полагаю, я не отправлять аутентификацию правильно?
private void ProcessData(CookieContainer cookieJar)
{
var client = new RestClient("QQQQQ/MobileAPI");
client.CookieContainer = cookieJar;
var request = new RestRequest {Resource = "/api/values/5", Method = Method.GET};
var responseForUser = client.ExecuteAsGet<AppUser>(request, "GET");
if (responseForUser.StatusCode == HttpStatusCode.OK)
{
AppUser app = responseForUser.Data;
Console.WriteLine(app.CUSAName);
}
if (responseForUser.StatusCode == HttpStatusCode.Unauthorized)
{
Console.WriteLine("FAILED");
}
}
Ваш второй вызов отправляет файл cookie или нет? – leastprivilege
API-контроллер работает иначе, чем Http-контроллер, я сомневаюсь, что атрибут Authorize работает с API-контроллером. Вам нужно будет проверить жизненный цикл контроллера API. –