55 votes

Comment gérer les sessions avec AFNetworking ?

Comme le titre l'indique, j'utilise AFNetworking dans un projet iOS dans lequel l'application communique avec un serveur. Lorsque l'utilisateur se connecte, le serveur répond en renvoyant un indicateur de succès et les en-têtes de réponse contiennent l'ID de session.

Je me demande si l'AFNetworking envoie automatiquement l'ID de session avec chaque demande ultérieure ou si je dois m'en occuper moi-même d'une manière ou d'une autre ?

Pour votre information, je n'ai aucun contrôle sur le back-end en termes de mode d'authentification des requêtes. Je construis seulement un client qui parle au serveur.

116voto

Michael Boselowitz Points 2029

Oui, votre ID de session devrait être envoyé automatiquement une fois que vous êtes connecté, à condition que le cookie n'expire pas avant l'envoi de la prochaine requête (détail important à vérifier). NSURLConnection que l'AFNetworking utilise, s'occupe des détails de cette opération pour vous.

Sur le back-end, AFNetworking utilise NSURLConnection qui, à son tour, met automatiquement à jour NSHTTPCookieStorage pour stocker la session. Vous pouvez manipuler ou supprimer les cookies comme bon vous semble en jouant avec le stockage des cookies.

Par exemple, si vous voulez apparaître au service comme n'étant pas connecté, vous pouvez simplement supprimer le cookie de session associé à ce domaine. Certains services avec lesquels j'ai travaillé affichent une erreur si vous êtes déjà connecté et que vous tentez de vous connecter à nouveau. De plus, il n'y a aucun moyen de vérifier l'état de la connexion. Solution rapide : récupérer les cookies de l'URL et les supprimer :

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

Le développeur lui-même

4voto

doNotCheckMyBlog Points 6319

Cela dépend de la spécification donnée par le service avec lequel vous interagissez. J'ai travaillé avec des services similaires et ils ont explicitement indiqué dans leur documentation que, Afin de maintenir la session valide, je dois interroger le service toutes les quelques secondes en envoyant int "1".

Toutefois, si possible, veuillez indiquer le nom du service ou toute référence que nous pouvons lire. S'il s'agit d'une API privée d'une entreprise, elle doit avoir décrit l'utilisation de l'identifiant de session qu'elle renvoie.


Les technologies sous-jacentes s'en chargeront. Toutefois, si vous souhaitez que ces cookies persistent, cela répond à une autre question.

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:

X