51 votes

Comment gérer les sessions avec AFNetworking?

Comme le titre l'indique, je suis à l'aide de AFNetworking dans un projet iOS dans lequel la demande est relié à un serveur. Lorsque l'utilisateur se connecte, le serveur répond en renvoyant un indicateur de réussite et les en-têtes de réponse contient l'ID de session.

Je me demande si AFNetworking envoie automatiquement l'ID de session à chaque demande ultérieure, ou dois-je prendre soin de moi-même, d'une certaine façon?

Pour votre information, je n'ai pas de contrôle sur le back-end en termes de la façon dont les demandes sont authentifiés. Je ne suis que la construction d'un client qui communique avec le serveur.

106voto

Michael Boselowitz Points 2029

Oui, votre ID de session doit être envoyé automatiquement une fois que vous êtes connecté, tant que le cookie n'expire pas avant la prochaine demande est envoyée (détail important pour en être sûr). NSURLConnection, ce qui AFNetworking utilise, prend soin des détails pour vous.

Sur le backend AFNetworking est à l'aide de NSURLConnection qui à son tour met à jour automatiquement NSHTTPCookieStorage stocker de la session. Vous pouvez manipuler ou de supprimer les cookies que vous voyez l'ajustement par jouer avec le cookie de stockage.

Comme si vous vouliez semblent le service n'êtes pas connecté, vous pouvez simplement supprimer le cookie de session associé à ce domaine. Certains services, j'ai travaillé avec l'erreur si vous êtes déjà connecté, et de tenter de vous connecter à nouveau. De plus, il n'avait aucun moyen de vérifier l'état de connexion. La correction rapide, obtenir les cookies à partir de l'URL et de les supprimer :

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

De le développeur lui-même

3voto

doNotCheckMyBlog Points 6319

Cela dépend de la spécification donnée par le service que vous êtes en interaction avec. J'ai travaillé avec des services similaires et ils ont explicitement indiqué dans leur documentation, afin de maintenir la session valide je doit interroger le service à toutes les quelques secondes par l'envoi d'int "1".

Toutefois, Si possible, pourrait s'il vous plaît poster le nom du service ou toute référence sur lequel on peut lire. Si c'est une société privée de l'API puis ils doivent avoir décrit l'utilisation de l'id de session qui, ils sont de retour.


Les technologies sous-jacentes va prendre soin d'elle, Cependant, si vous voulez persister ces cookies alors cette réponse pour d'autres question.

La persistance des Cookies Dans Une Application iOS?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: