Vous devriez toujours utiliser le trousseau pour stocker les noms d'utilisateur et les mots de passe, et comme il est stocké de manière sécurisée et uniquement accessible à votre application, il n'est pas nécessaire de le supprimer lorsque l'application quitte (si tel était votre souci).
Apple fournit exemple de code qui stocke, lit et supprime les éléments du trousseau. Voici comment utiliser la classe wrapper keychain de cet exemple, qui simplifie grandement l'utilisation de Keychain.
Inclure Security.framework (dans Xcode 3 clic droit sur le dossier frameworks et ajouter un framework existant. Dans Xcode 4, sélectionnez votre projet, puis sélectionnez la cible, allez dans l'onglet Build Phases et cliquez sur + sous Link Binary With Files) et KeychainItemWrapper .h & .m dans votre projet, #importer le fichier .h partout où vous avez besoin d'utiliser keychain et ensuite créer une instance de cette classe :
KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"YourAppLogin" accessGroup:nil];
( VotreAppLogin peut être tout ce que vous avez choisi pour appeler votre élément de trousseau et vous pouvez avoir plusieurs éléments si nécessaire)
Ensuite, vous pouvez définir le nom d'utilisateur et le mot de passe en utilisant :
[keychainItem setObject:@"password you are saving" forKey:kSecValueData];
[keychainItem setObject:@"username you are saving" forKey:kSecAttrAccount];
Obtenez-les en utilisant :
NSString *password = [keychainItem objectForKey:kSecValueData];
NSString *username = [keychainItem objectForKey:kSecAttrAccount];
Ou les supprimer en utilisant :
[keychainItem resetKeychainItem];
0 votes
L'utilisateur ne peut l'effacer qu'en réinitialisant l'appareil ou en supprimant l'application. Est-ce que quelque chose m'échappe ?
3 votes
Et d'ailleurs, si les données doivent être supprimées lorsque l'utilisateur quitte l'application, pourquoi ne pas simplement les conserver en RAM ?
10 votes
Vous devriez sérieusement envisager d'utiliser Keychain pour stocker les noms d'utilisateur et les mots de passe au lieu de NSUserDefaults.
1 votes
Vous pouvez obtenir une idée de base sur la mise en œuvre de swift3 à partir de ici
0 votes
Dois-je toujours utiliser kSecValueData et kSecValueData comme clés ? Ou puis-je utiliser n'importe quelle chaîne de caractères comme clé ?
0 votes
Je pensais que c'était une mauvaise idée de stocker le nom d'utilisateur et le mot de passe dans apps.... ? Surtout si l'on interagit avec une API externe...
0 votes
Tout le monde ici recommande malheureusement de sauvegarder les informations d'identification dans le KeyChain qui peut être facilement vidé à l'aide de nombreux outils comme KeyChain Dumper, qui expose toutes vos informations d'identification sauvegardées, vous devriez trouver un autre moyen sûr d'utiliser pour stocker vos informations d'identification comme demander un jeton après chaque lancement d'application et rafraîchir ce jeton après une période de temps.