¿Cómo administrar sesiones con AFNetworking?

Como el título implica, estoy usando AFNetworking en un proyecto iOS en el que la aplicación habla con un server. Cuando el usuario inicia session, el server responde enviando una bandera de éxito y los encabezados de respuesta contienen el ID de session.

Me pregunto si AFNetworking envía automáticamente la ID de session con cada request posterior o, ¿debo ocuparme de esto de alguna manera?

Para su información, no tengo control sobre el back-end en términos de cómo se autentican las requestes. Solo estoy construyendo un cliente que habla con el server.

Sí, su identificación de session debe enviarse automáticamente una vez que haya iniciado session, siempre que la cookie no caduque antes de enviar la siguiente request (detalles importantes para asegurarse). NSURLConnection , que AFNetworking usa, se encarga de los detalles para esto para usted.

En el backend AFNetworking está utilizando NSURLConnection que a su vez actualiza automáticamente NSHTTPCookieStorage para almacenar la session. Puede manipular o eliminar las cookies como mejor le parezca al jugar con el almacenamiento de cookies.

Al igual que si quisiera aparecer en el service como no conectado, puede simplemente eliminar la cookie de session asociada a ese dominio. Algunos services con los que he trabajado se equivocarán si ya inició session e intenta iniciar session de nuevo. Además, no había forma de verificar el estado de inicio de session. Solución rápida, obtenga las cookies de la URL y elimínelas:

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

Del desarrollador mismo

Esto depende de la especificación dada por el service con el que está interactuando. He trabajado con services similares y han declarado explícitamente en su documentation que, para mantener la session válida, debo sondear el service cada pocos segundos enviando int "1".

Sin embargo, si es posible, puede publicar el nombre del service o cualquier reference que podamos leer. Si es la API privada de cualquier compañía, entonces deben haber descrito el uso de la ID de session que están devolviendo.


Las tecnologías subyacentes se encargarán de ello, sin embargo, si desea persistir en esas cookies, entonces esta respuesta para otra pregunta.

¿Cookies persistentes en una aplicación de iOS?