4

먼저 난 그냥Windows Store App에서 HttpClient를 사용하여 ASP.Net MVC 웹 사이트 (양식 인증)에 로그인하는 방법?

string r = await hc.GetStringAsync(BaseUrl); 

가 그럼 난 로그인 URL에 사용자 이름/암호를 게시 "__RequestVerificationToken"로 쿠키를 얻을 수있는 기본 URL을 명중

다음
CookieContainer cookies = new CookieContainer(); 
HttpClientHandler handler = new HttpClientHandler(); 
handler.CookieContainer = cookies; 
handler.UseCookies = true; 
var hc = new HttpClient(handler); 

쿠키 용기와 HttpClientHandler를 생성

HttpContent content = new FormUrlEncodedContent(new[] 
{ 
    new KeyValuePair<string, string>("UserName", "admin"), 
    new KeyValuePair<string, string>("Password", password), 
}); 
HttpResponseMessage response = await hc.PostAsync(LoginUrl, content); 

가 그럼 난 서버 오류 "필요한 위조 방지 양식 필드 " __RequestV erificationToken "가 없습니다 ".

하지만 피들러에서 요청을 확인하면 "__RequestVerificationToken"이 요청의 쿠키에 이미 추가 된 것을 볼 수 있습니다.

그런 다음 IE에서 수동으로 로그인하여 IE의 요청 종류를 확인했습니다.

은 그 때 나는 IE는 형태 "__RequestVerificationToken"를 넣어 발견, 그래서 내가이 오류 제공된 위조 방지 토큰의

"검증을 받았습니다 그런 다음

new KeyValuePair<string, string>("__RequestVerificationToken", cookies.GetCookies(new Uri(BaseUrl)).Cast<Cookie>().FirstOrDefault(x => x.Name == "__RequestVerificationToken").Value) 

형태로 쿠키를 추가 쿠키 " _ RequestVerificationToken " 및 양식 필드 " _RequestVerificationToken "이 바뀌 었습니다. "

그런 다음 Google에서이 오류에 대한 검색 결과를 가져올 수 없습니다.

아이디어가 있으십니까?

감사합니다.

답변

3

발견 :

쿠키에 추가 된 "__RequestVerificationToken"이 양식에 추가 된 것과 다릅니다.

그래서 "반환 된 HTML 문자열에서 양식의"__RequestVerificationToken "값을 가져 와서 작업했습니다!

+1

감사합니다. 나 또한 트릭을 만들었습니다. 이 회신을 답으로 표시하십시오. – To1ne