保存登录凭据 Xcode

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/12350072/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 01:26:46  来源:igfitidea点击:

Saving login credentials Xcode

iphoneobjective-ciosxcodeipad

提问by fadd

I am implementing an application, the first view is the login view. it contains 3 textfields Account name, Username and password. i want to let the application to save the login information in order not to let the user write them each time he/she opens the application. And to be deleted when he/she logs out.

我正在实现一个应用程序,第一个视图是登录视图。它包含 3 个文本字段帐户名、用户名和密码。我想让应用程序保存登录信息,以免用户每次打开应用程序时都编写它们。并在他/她注销时被删除。

how to do that? and how to read/write on a file?

怎么做?以及如何读/写文件?

Thankfully yours

谢天谢地

采纳答案by Vikas S Singh

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.

logOut : 设置所有值为空。

回答by msk

Use key chain for storing login password. Below is the simple code

使用钥匙串存储登录密码。下面是简单的代码

To store:

储藏:

KeychainItemWrapper *keychain = 
 [[KeychainItemWrapper alloc] initWithIdentifier:@"MyAppLoginData" accessGroup:nil];
[keychain setObject:loginStr forKey:(id)kSecAttrAccount];
[keychain setObject:pwdStr forKey:(id)kSecValueData];

To query:

查询:

NSString *login = [keychain objectForKey:(id)kSecAttrAccount];
NSString *pwd = [keychain objectForKey:(id)kSecValueData];

To Delete:

删除:

[keychain resetKeychainItem];

You need to add KeychainItemWrapper.h and KeychainItemWrapper.m (here) in your project first.

您需要首先在您的项目中添加 KeychainItemWrapper.h 和 KeychainItemWrapper.m(此处)。

Another important aspects of using keychain to store data is

使用钥匙串存储数据的另一个重要方面是

  1. The data is persistent even after app uninstall-install
  2. The data can be shared across your apps (need to have same bundle seed id, read from here). Think of single sign on for all your apps.
  3. The data is removed only on Device Reset from settings.
  1. 即使在应用程序卸载-安装之后数据仍然存在
  2. 数据可以在您的应用程序之间共享(需要具有相同的捆绑种子 ID,从这里读取 )。想想所有应用程序的单点登录。
  3. 仅在从设置中重置设备时才会删除数据。

回答by Templar

This kind of sensitive data is usually stored in keychain. Similar question here

这种敏感数据通常存储在钥匙串中。类似的问题在这里

回答by Paresh Navadiya

Check keychainServConceptsfor saving required data

检查keychainServConcepts以保存所需数据

Check STUtilsfor saving Username and password securely.

检查STUtils以安全地保存用户名和密码。

U can also use NSUserDefault to save data with key as userName and remove when required.

您还可以使用 NSUserDefault 将数据保存为用户名,并在需要时删除。