2013-04-26 3 views
0

성공적으로 MVC 4 웹 API 사이트에 로그인하여. ASPXAUTH 설정 쿠키이 방법 :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); 
    } 

당신은 내가 다음 [AUTHORIZE] 컨트롤러 뒤에 앉아 편안하고 명령을 처리 할 수있는 ProcessData() 함수에 CookieContainer 통과 볼 수 있듯이.

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"); 
     } 
    } 
+0

두 번째 전화가 쿠키를 보내거나 받나요? – leastprivilege

+0

API 컨트롤러가 Http 컨트롤러와 다르게 작동하므로 API 컨트롤러에서 Authorize 특성이 작동하는지 의심 스럽습니다. API 컨트롤러의 수명주기를 확인해야합니다. –

답변

0

난 그냥 IISRESET으로 서버를 재설정했다 밝혀졌습니다. 그것은 아마도 나쁜 상태에있었습니다.

위 코드는 Android 기기에서 을 완벽하게으로 처리했습니다.