10
votes

iOS: Comment authentifier un utilisateur après la connexion (pour la connexion automatique)?

J'aimerais utiliser une fonction de connexion automatique. Ainsi, lorsque l'utilisateur ouvre l'application, il est délégué à un "écran de connexion". Lorsqu'il se connectait avec succès, il devrait être dirigé vers son compte. J'appelle cela "l'écran de compte". Maintenant, lorsque l'utilisateur redémarre l'application, il devrait directement être dirigé vers son compte, sans voir l'écran de connexion ".

La fonction de connexion fonctionne déjà bien dans mon projet (nom d'utilisateur et mot de passe sont enregistrés dans UserDefault), mais chaque fois que je ferme l'application, je dois me connecter à nouveau. Donc, ma question est la suivante: comment auto connectez-vous l'utilisateur? Ou mieux a dit: comment puis-je vérifier si les données (enregistrées dans UserDefault) sont identiques que dans la base de données (MySQL)?


5 commentaires

Je n'ai aucune idée de ce que vous essayez de demander ...


Il suffit de définir une balise peut-être appelée «Connexion» Bool, dans UserDefault, puis détectez-la lorsque vous l'aimez


Puisque vous stockez les informations de connexion dans UserDefault, quel est le problème à vérifier si ces informations sont existées et si cela ne doit pas afficher l'écran de connexion?


Excusez-moi, devait me dépêcher. Maintenant, le cas devrait être clair xo. Merci quand même


Vous pouvez essayer le Authnavigation Cadre. Il aide votre organisation à organiser la présentation d'un écran de connexion et prend également en charge la connexion automatique.


4 Réponses :


23
votes
  1. Pour la première fois lorsque l'utilisateur se connecter, vous enregistrez l'utilisateur. Critiques dans le porte-clés de l'iPhone.
  2. Lorsque l'application est ouverte à nouveau, vous vérifiez si les informations d'identification des utilisateurs sont présent dans Keychain et si oui, vous devez appeler le login logique et faire connecter automatiquement et accédez à l'écran après l'écran de connexion. Sinon, Ensuite, vous devez afficher l'écran de connexion. Vous pouvez faire cette logique dans Appdelegates ApplicationDidfinishLaunching.
  3. Chaque fois que l'utilisateur clique sur le bouton de la déconnexion, supprimez les informations d'identification des utilisateurs de Keychain d'abord et retourner au contrôleur de connexion.

    Vous ajoutez simplement des informations d'identification de connexion à Keychain lorsque l'utilisateur se connecte et ne le supprimez que lorsque l'utilisateur clique sur le bouton de déconnexion. Si l'utilisateur quitte l'application sans déconnexion, les informations d'identification seront toujours dans Keychain et vous pouvez les récupérer lorsque l'utilisateur retourne à l'application.

    EDIT: Je pense que je dois ajouter une chose de plus..Si votre logique de connexion prend du temps (comme vous vous connectez à l'aide de la demande Web ou quelque chose), placez le code de connexion de votre logique de connexion plutôt que ApplicationDélégate et utilisez tout indicateur d'activité lors du processus de connexion automatique.

    EDIT : J'ai édité toute la réponse, remplacée NSUserDefault avec Keychain. thread explique pourquoi.


2 commentaires

Merci beaucoup pour cette réponse claire. Que voulez-vous dire avec "logique de connexion"?


@SasChawieland Si votre connexion nécessite une demande / réponse Web, elle prendra du temps. Par logique de connexion, je signifie simplement le processus de connexion réelle.



2
votes

Tout en enregistrant le nom d'utilisateur et le mot de passe, il est vivement conseillé de sauvegarder dans Keychain plutôt que de Nsuserdefault. Reportez-vous à ce publier pour une meilleure compréhension.


5 commentaires

J'ai utilisé Keychain, mais pouvez-vous me dire comment autologin avec des données de porte-clés? Il est assez lourd d'obtenir des données de la chaîne pour un autologin.


Je suppose que vous avez utilisé un service Web pour authentifier le mot de passe nom d'utilisateur pour la première fois. Sur chaque lancement consécutif, choisissez le nom d'utilisateur et le mot de passe de votre clé de clavier et utilisez le même service Web pour authentifier l'utilisateur. Lors de l'authentification, vous pouvez afficher un écran de chargement pour notifier à l'utilisateur.


Si vous définissez les détails sur Keychain à l'aide du code [KeyChainitem SetObject: @ "Mot de passe" Foreille: Ksecvaluedata]; [KeyChainitem SetObject: @ "Nom d'utilisateur" Forge: ksecattraccount]; , alors vous pouvez récupérer les détails à l'aide de nstring * mot de passe = [keychainitem objetforkey: ksecvaluedata]; Nstring * nom d'utilisateur = [keychainitem objetforkey: ksecattraccount];


Ok Roshit, c'était très utile. Ma question maintenant: comment puis-je vérifier s'il y a des données dans Keychain (si non -> écran de connexion)? S'il y a des données, comment puis-je comparer ces données avec ma base de données?


Sur LaunchOfapp dans Appdelegate, accédez au Keychain et récupérez les détails du nom d'utilisateur et du mot de passe. Si les détails où sont enregistrés dans le porte-clés, ces valeurs seront remplacées. Si les valeurs ne sont pas disponibles, Goto Loginscreen et l'utilisateur invite à entrer des informations d'identification. Si les valeurs sont là, faites votre chèque d'authentification.



0
votes

Pour répondre à la question: Si vous souhaitez vous connecter automatiquement avec les données de KeyChain, utilisez le cadre gratuit "SFHFeyCeyChaintutils". Il enregistre le nom d'utilisateur, le mot de passe et le serviconame dans Keychain. Si vous souhaitez le récupérer, enregistrez simplement le nom d'utilisateur dans NSUserDefault et vous pouvez facilement obtenir facilement le mot de passe.

Ici, nous allons:

SIFI HIFI Framework: HTTPS: // github.com/ldandersen/scanfihifidiidiphone/tree/master/security

SIFI HIFI Framework (Compatible Arc): https://stackoverflow.com/a/10348964/ 1011125

Comment utiliser sfhfkeychaintutils: http://gorgando.com/blog/technology/iphone_development/simple-iphone-tatutoriel-password-management-utilisateur-the-keychain-by-utilisant-sfhfkeychaintutils


1 commentaires

Soyez prudent lors de l'affichage de la copie et de la collecte de la chaudière / Verbatim répond à plusieurs questions, celles-ci ont tendance à être signalées comme "spammy" par la communauté. Si vous faites cela, cela signifie généralement que les questions sont des doublons, alors signalez-le comme tel.



0
votes

J'ai utilisé une combinaison de Nsuserdefault et Sskeychain. J'ai utilisé Nsuserdefault pour stocker le nom d'utilisateur Nad Sskeychain pour stocker le mot de passe.

Ceci est le code que j'ai utilisé pour enregistrer les informations d'identification xxx

ceci est le code que j'ai utilisé pour récupérer les informations d'identification xxx


0 commentaires