我正在实现一个应用程序,第一个视图是登录视图。它包含3个文本字段帐户名称,用户名和密码。我想让应用程序保存登录信息,以便在用户每次打开应用程序时不让用户编写它们。并且在他/她退出时被删除。保存登录凭证Xcode
该怎么办?以及如何读取/写入文件?
谢天谢地你的
我正在实现一个应用程序,第一个视图是登录视图。它包含3个文本字段帐户名称,用户名和密码。我想让应用程序保存登录信息,以便在用户每次打开应用程序时不让用户编写它们。并且在他/她退出时被删除。保存登录凭证Xcode
该怎么办?以及如何读取/写入文件?
谢天谢地你的
To Save:
[[NSUserDefaults standardUserDefaults] setValue:AccountTxtField.text forKey:@"Account"];
[[NSUserDefaults standardUserDefaults] setValue:UserTxtField.text forKey:@"Username"];
[[NSUserDefaults standardUserDefaults] setValue:passwordTxtField.text forKey:@"password"];
[[NSUserDefaults standardUserDefaults] synchronize];
To Read:
NSString * _Account = [[NSUserDefaults standardUserDefaults] stringForKey:@"Account"];
NSString * _UserName = [[NSUserDefaults standardUserDefaults] stringForKey:@"Username"];
NSString * _password = [[NSUserDefaults standardUserDefaults] stringForKey:@"password"];
logOut:set all value is null。
不好的建议。不要使用用户默认值来存储敏感数据。正如其他人已经回答的那样,使用钥匙串API。 –
@JensKilian请阅读并复习问题,然后评论 –
我知道它根本没有安全感,但它是最简单和最快速的。而我的数据并不安全。 感谢所有的建议:) – fadd
这类敏感数据通常存储在钥匙串中。类似的问题here
检查keychainServConcepts保存所需的数据
检查STUtils用于保存用户名和密码安全。
U也可以使用NSUserDefault以key的形式保存数据作为userName,并在需要时删除。
使用钥匙链来存储登录密码。下面是简单的代码
要存储:
KeychainItemWrapper *keychain =
[[KeychainItemWrapper alloc] initWithIdentifier:@"MyAppLoginData" accessGroup:nil];
[keychain setObject:loginStr forKey:(id)kSecAttrAccount];
[keychain setObject:pwdStr forKey:(id)kSecValueData];
要查询:
NSString *login = [keychain objectForKey:(id)kSecAttrAccount];
NSString *pwd = [keychain objectForKey:(id)kSecValueData];
删除:
[keychain resetKeychainItem];
您需要添加KeychainItemWrapper.h和KeychainItemWrapper.m (here)首先在您的项目中。
使用钥匙串来存储数据的另一个重要方面是
请不要在NSUserDefaults中存储敏感数据。使用KeychainService或在将数据存储在NSUserDefault中后首先加密数据。 – Iducool
@fadddd我不建议将敏感数据存储到'NSUserDefaults'中,KeychainItemWrapper是您可以拥有的最佳选择。祝你好运。 – viral