2012-01-27 10 views
8

Bir REST istemcisi (AFNetworking ile) yazıyorum ve uygulamanın tek bir örneğinde yeni bir oturum oluşturmayı tetikleme özelliğine gereksinim duyuyorum. Başka bir deyişle

, ben istiyorum:
1 - sunucuya
2 ile kimlik doğrulaması - sunucudaki
5 ile kimlik doğrulaması Yeniden - - simüle
4 "Çıkış" - bazı DİNLENME
3 çağırır mı bazı yapın daha fazla REST çağrısı

AFNetworking, ilk kimlik doğrulama ve REST çağrılarını yapmakla mükemmeldir, ancak oturumu nasıl temizleyeceğimi ve bağlantıyı aynı örnekte nasıl "sıfırlayacağımı" anlayamıyorum.

ASIHTTP'yi kullandığımda, şunu yaptım:
[ASIHTTPRequest clearSession];

AFNetworking ile benzer bir şey yapmanın bir yolu var mı?

AFNetworking ile temel kimlik doğrulama bilgilerini sıfırlama

cevap

1

Aramaları, bildiğim kadarıyla oturumlara dayalı değil dinlenin. Anlamı, belirli bir çağrıda bir kimlik doğrulama ve oturum kapatma oturumu simüle edemezsiniz. Yapabileceğimi düşündüğüm şey, bitiş noktasına yapılan her çağrı için Kimlik Doğrulaması yapmaktır. Yani her son nokta için (Yöntem), arayanın kimliğini doğrularsınız. Bence bu, huzurlu bir sistemde yapabileceğiniz bahisler.

+8

hmm biraz daha oynadı kendisiyle ve benim için hile yapıyor gibi görünüyor çerez önbelleği ateş basması gibi görünüyor .: NSHTTPCookieStorage * cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSArray * çerezleri = [cookieStorage çerezleri]; (çerezlerde NSHTTPCookie * çerezi) { [cookieStorage deleteCookie: cookie]; NSLog (@ "silinen çerez"); } – user1174179

+1

Bu çerez ipucu gerçekten kullanışlıdır. Teşekkürler. – Keller

+0

Çerez temizleme aynı zamanda aradığım şeydi. – Harpastum

9

AFHTTPClient kullanın (örnek projedeki API istemcisine bakın). Kimlik bilgileri -setAuthorizationHeaderWithUsername:password: ile belirlenebilir. Bu HTTP istemcisinden oluşturulan her istek, bir tarayıcı oturumu gibi bir Authorization HTTP üstbilgisine sahip olacaktır.

Kullanıcı oturumu kapattığında veya kimlik bilgilerini silmek istediğinizde, -clearAuthorizationHeader yapın.

2

Daha da basit.

[request setHTTPShouldHandleCookies:NO];