Jak zarządzać sesjami z AFNetworking?

Jak sugeruje tytuł, używam AFNetworking w projekcie iOS, w którym aplikacja rozmawia z serwerem. Gdy użytkownik zaloguje się, serwer odpowie, wysyłając flagę sukcesu, a nagłówki odpowiedzi zawierają identyfikator sesji.

Zastanawiam się, czy AFNetworking automatycznie wysyła ID sesji z każdym kolejnym żądaniem, czy też powinienem się tym zająć sam w jakiś sposób?

Dla twojej informacji, nie mam kontroli nad zapleczem pod względem tego, jak wnioski są uwierzytelnione. Buduję tylko klienta, który rozmawia z serwerem.

Author: Bart Jacobs, 2012-06-11

2 answers

Tak, identyfikator sesji powinien być wysyłany automatycznie po zalogowaniu, o ile plik cookie nie wygaśnie przed wysłaniem następnego żądania(ważny szczegół, którego należy się upewnić). NSURLConnection, którego używa AFNetworking, dba o szczegóły dla Ciebie.

Na backendzie AFNetworking używa NSURLConnection, który z kolei automatycznie aktualizuje NSHTTPCookieStorage do przechowywania sesji. Możesz manipulować lub usuwać pliki cookie według własnego uznania, zakłócając przechowywanie plików cookie.

Like if you chcesz pojawić się w Serwisie jako niezalogowany, możesz po prostu usunąć plik cookie sesji skojarzony z tą domeną. Niektóre usługi, z którymi pracowałem, będą miały błąd, jeśli jesteś już zalogowany i próbujesz zalogować się ponownie. Dodatkowo nie było możliwości sprawdzenia statusu logowania. Szybkie poprawki, pobierz pliki cookie z adresu URL i usuń je:

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL: networkServerAddress];
for (NSHTTPCookie *cookie in cookies) 
{
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}

Od samego dewelopera

 115
Author: Michael Boselowitz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:53

Zależy to od specyfikacji podanej przez usługę, z którą użytkownik wchodzi w interakcję. Pracowałem z podobnymi serwisami i wyraźnie stwierdzili w swojej dokumentacji, że w celu utrzymania sesji poprawnej muszę co kilka sekund przepytywać serwis wysyłając int "1".

Jednakże, jeśli to możliwe, prosimy o zamieszczenie nazwy usługi lub jakiegokolwiek odniesienia, które możemy przeczytać. Jeśli jest to prywatne API jakiejkolwiek firmy, muszą opisać użycie identyfikatora sesji, którym są wracam.


Podstawowe technologie zajmą się tym, jednak jeśli chcesz zachować te pliki cookie, to ta odpowiedź na inne pytanie.

Trwałe pliki cookie w aplikacji na iOS?

 4
Author: TeaCupApp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:59