2012-01-19 37 views
5

Kullanıcı Kimlik Doğrulaması'nı kullanan bir web sitesini yükleyen bir UIWebView var. Site bir Kimlik Doğrulama çerezi oluşturur. Tarayıcınızda, çerezlerinizi temizlemediğiniz sürece, her zaman giriş yapmış olursunuz. XCODE yüklendiğinde, çerez kavanozuna bakıldığında listelenen çerezleri görebilir, ancak webView'e gönderilmez. WebView'in auth çerezinin orada olduğunu bilmesini isterim ki, her seferinde kullanıcıyı kimlik doğrulaması için sormaya devam etmeyecek.iOS UIwebView Kimlik Doğrulama Çerezleri

cevap

7

Web sitesine giriş yapmak ve çerezi almak için bir HTTP isteği gerçekleştirmek için NSURLConnection sınıfını kullanabilirsiniz. Bir istek gerçekleştirmek için, yalnızca bir NSURLConnection örneği oluşturun ve ona bir temsilci nesnesi atayın. Daha sonra bir temsilci yöntemi uygulayın. Tanımlama bilgisi dizesini saklayın veya kopyalayın ( ) Başka bir istek gerçekleştirmek istediğinizde, bunu NSURLRequest örneğinizin HTTP başlığına ekleyin.

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

Çerez zaman bu yöntemi çağırabilirsiniz silmek İÇİN:

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

Tamam .net aspxauth çerez almak için, ben Xcode yeniyim ve bu konuda sorularım var. Çok basitlerse bana isimleri aramaktan çekinmeyin. AppDelegate.m dosyasında NSURL ve NSURLConnection bildirmeye çalışıyorum ve sabit olmayanlar hakkında bir derleyici hatası aldım. AppDelagate.m de delege uyguladı ve bu derler. NSMutable Hangi yöntemin olması gerektiği konusunda hiçbir fikrim yok. Eminim bu basit sorulardır ama gerçekten bilmiyorum. – Hector

2

Sorunu çözüldü. Sorun, UIWebView standart bir web tarayıcısı olarak görülmediğinden yapılandırma ile ilgili. Kullanıcıyı .net ve IIS aracılığıyla doğrularım. Web sitemin App_Browser dizinine bir generic.browser dosyası ekledim. Dosyanın içeriği:

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

konu çerezleri izin yeteneği olduğunu düzeltir hattı.

kullandığım çözümüne referans bu

Asp.Net Forms Authentication when using iPhone UIWebView

4

paylaşılan çerez depolama kullanan tüm sitelerden kimlik doğrulama kodunu okuyabilir oldu.

NSHTTPCookie *cookie; 

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

VEYA web siteniz için

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

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