2012-01-19 5 views
5

나는 사용자 인증 웹 사이트를로드하는 UIWebView가 있습니다. 사이트에서 인증 쿠키를 만듭니다. 브라우저에서 쿠키를 지우지 않으면 항상 로그인하게됩니다. xCODE가로드되면 쿠키 항아리를 볼 때 나열된 쿠키를 볼 수 있지만 WebView로 전송되지는 않습니다. WebView가 auth 쿠키가 있다는 것을 WebView에 알리는 방법을 알고 싶습니다. 매번 인증을 요구하는 메시지를 계속 표시하지 않습니다.iOS UIwebView 인증 쿠키

답변

7

NSURLConnection 클래스를 사용하여 웹 사이트에 로그인하고 쿠키를 검색하는 HTTP 요청을 수행 할 수 있습니다. 요청을 수행하려면 NSURLConnection의 인스턴스를 만들고 여기에 대리자 객체를 할당하면됩니다.

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]; 
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self]; 

그런 다음 대리인 메서드를 구현하십시오.

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
    NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response; 
    NSDictionary *fields = [HTTPResponse allHeaderFields]; 
    NSString *cookie = [fields valueForKey:"Set-Cookie"]; // It is your cookie 
} 

쿠키 문자열을 유지하거나 복사하십시오. 다른 요청을 수행하려면 NSURLRequest 인스턴스의 HTTP 헤더에 추가하십시오.

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]; 
[request addValue:cookie forHTTPHeaderField:"Cookie"]; 

는 쿠키 언제든지이 메서드를 호출 할 수 있습니다 삭제하려면

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
    for (NSHTTPCookie *each in [[[cookieStorage cookiesForURL:YOUR_URL] copy] autorelease]) { 
     [cookieStorage deleteCookie:each]; 
    } 
+0

확인의 .NET aspxauth 쿠키를 얻기 위해, 나는 엑스 코드에 새로 온 사람과 나는 이것에 대해 질문이 있습니다. 이름이 너무 간단하면 이름을 불러주세요. AppDelegate.m 파일에서 NSURL 및 NSURLConnection을 선언하고 비공식 상수가 아닌 컴파일러 오류가 발생했습니다. AppDelagate.m에서도 위임을 구현했으며 컴파일되었습니다. NSMutable 나는 어떤 방법으로 가야하는지 전혀 모른다. 나는 이것이 단순한 질문이라고 확신하지만, 나는 정말로 모른다. – Hector

2

나는이 문제를 해결했다. UIWebView가 표준 웹 브라우저로 보이지 않으므로 문제는 구성과 관련이 있습니다. 나는 .net과 IIS를 통해 사용자를 인증하고있다. 내 웹 사이트의 App_Browser 디렉토리에 generic.browser 파일을 추가했습니다. 파일의 내용은 다음과 같습니다

<browsers> 
    <browser refID="Mozilla" > 
    <capabilities> 
     <capability name="cookies" value="true" /> 
    </capabilities> 
    </browser> 
    <browser refID="Default"> 
     <capabilities> 
     <capability name="cookies" value="true" /> 
     </capabilities> 
    </browser> 
</browsers> 

문제가 쿠키를 허용 기능입니다 수정 라인입니다.

내가 사용하는 솔루션에 대한 언급이

Asp.Net Forms Authentication when using iPhone UIWebView

4

당신은 공유 쿠키의 저장을 사용하여 모든 웹 사이트에서 인증 쿠키를 읽을 수 있었다.

NSHTTPCookie *cookie; 

NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
for (cookie in [cookieJar cookies]) 
{ 
    NSLog(@"%@", cookie); 
} 

는 또는 당신의 웹 사이트를위한

NSArray *cookiesForURL = [cookieJar cookiesForURL: [NSURL URLWithString: **MYURL**]]; 

for (cookie in cookiesForURL) 
{ 
    if([cookie.name compare:@".ASPXAUTH"] == NSOrderedSame) 
    { 
     NSLog(@"%@", cookie); 
     break; 
    } 
}