2010-02-11 28 views
0

Donc, ce que je dois faire dans mon application pour se connecter est Effectuer une requête HTML avec user/pass qui retourne XML avec un token. Le jeton est utilisé dans les demandes http ultérieures.Comment et où effectuer le processus de connexion (dans ce cas obtenir le jeton du serveur) dans l'application iPhone?

Je sais comment effectuer des requêtes http et aussi comment les analyser, je l'ai déjà fait juste avec le jeton codé en dur à des fins de test. J'ai aussi travaillé sur la façon d'utiliser les préférences de l'application pour permettre l'entrée et retreval du mot de passe via:

NSString* settingValue = [[NSUserDefaults standardUserDefaults] stringForKey:@"<Setting Key>"] 

La question est de savoir si je veux que cela se produise lorsque l'application lance où dois-je faire? Je ne veux pas que mon application se bloque lorsqu'elle se lance sans donner de retour à l'utilisateur, vous savez s'il n'y a pas d'ensemble utilisateur/passe ou si c'est rejeté par le serveur. Quel est ton consseille? Merci

Répondre

0

Dans l'application que je développe, je le fais dans la première vue dans un fil séparé. De cette façon, il ne verrouille pas l'interface utilisateur. Je le fais aussi en tant que délégué de la vue principale afin qu'il puisse rendre compte de la progression d'une barre de progression. Plus tard, je vais le faire comme une diapositive dans la vue qui est juste ombragée afin que la personne puisse utiliser des parties de l'application qui ne nécessitent pas d'authentification pendant le chargement de l'authentification. IMO Si vous le faites dans le délégué de l'application, cela peut prendre plusieurs secondes pour vous authentifier et vous ne pourrez pas le signaler à l'utilisateur facilement. La meilleure façon de gérer l'authentification consiste à utiliser des cookies lorsque vous utilisez des requêtes HTML. Vous pouvez récupérer ces cookies en utilisant l'application NSHTTPCookieStorage large (pas seulement dans la classe qui a fait l'authentification). Si vous souhaitez continuer à utiliser votre jeton, vous pouvez créer une variable globale dans votre classe Application Delegate (myApplicationAppDelegate.h)

PS, je ne conserverais pas le nom d'utilisateur et le mot de passe dans NSUserDefaults comme étant stocké en texte brut sur l'appareil . Utilisez le trousseau à la place.

+0

Où stockez-vous ce jeton une fois que vous l'avez afin qu'il soit accessible à d'autres vues? Délégué de l'application? – startoftext

+0

Bien dans mon projet à ne retourne pas un jeton pour vérifier les utilisateurs authentifiés mais un cookie qui est stocké dans une zone de stockage étendue appelée NSHTTPCookieStorage – Rudiger

+0

Vous pouvez conserver les variables globales dans votre AppViewController pour stocker les données de session, qui seront disponibles pour autres vues, car chaque fois que vous passez d'une vue à l'autre, la nouvelle vue est créée à partir de AppViewController. – pMan