web-dev-qa-db-fra.com

Comment gérer les sessions avec AFNetworking?

Comme son titre l'indique, j'utilise AFNetworking dans un projet iOS dans lequel l'application parle à 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 contiennent l'ID de session.

Je me demande si AFNetworking envoie automatiquement l'ID de session à chaque demande ultérieure ou dois-je 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 d'authentification des requêtes. Je construis uniquement un client qui parle au serveur.

55
Bart Jacobs

Oui, votre identifiant de session doit être envoyé automatiquement une fois que vous êtes connecté, tant que le cookie n'expire pas avant l'envoi de la prochaine demande (détail important à vérifier). NSURLConnection, utilisé par AFNetworking, s'occupe pour vous des détails.

Sur le backend, 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.

Comme si vous vouliez apparaître au service comme non connecté, vous pouvez simplement supprimer le cookie de session associé à ce domaine. Certains services avec lesquels j'ai travaillé afficheront des erreurs si vous êtes déjà connecté et essayez de vous reconnecter. De plus, il n'y avait aucun moyen de vérifier l'état de la connexion. Solution rapide, récupérez les cookies de l'URL et supprimez-les:

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

Du développeur lui-même

116
Michael Boselowitz

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

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


Les technologies sous-jacentes s'en occuperont. Cependant, si vous souhaitez conserver ces cookies, répondez à cette autre question.

Cookies persistants dans une application iOS?

4
TeaCupApp