我的应用程序(像大多数应用程序一样)将利用许多远程服务......所以当用户验证自己时,我需要存储他们的用户名和密码(或某种标志),这样他们就不必全面验证应用程序。
存储此用户数据的最佳/最快/最简单的位置在哪里?
您仍然可以使用 NSUserDefaults 存储用户名和服务器 URL,但如果您要存储密码,钥匙串服务是最好的主意。它是基于 C 的安全框架的一部分,并且有一个很棒的包装类SFHFKeychainUtils,为它提供了一个 Objective-C API。
保存:
NSString *username = @"myname";
NSString *password = @"mypassword";
NSURL *serverURL = [NSURL URLWithString:@"http://www.google.com"];
[SFHFKeychainUtils storeUsername:username andPassword:password forServiceName:[serverURL absoluteString] updateExisting:YES error:&error]
恢复:
NSString *passwordFromKeychain = [SFHFKeychainUtils getPasswordForUsername:username andServiceName:[serverURL absoluteString] error:&error];
NSUserDefaults
Save like this:
[[NSUserDefaults standardUserDefaults] setObject:username forKey:@"username"];
[[NSUserDefaults standardUserDefaults] setObject:password forKey:@"password"];
[[NSUserDefaults standardUserDefaults] synchronize];
Fetch like this:
NSString *username = [[NSUserDefaults standardUserDefaults] stringForKey:@"username"];
NSString *password = [[NSUserDefaults standardUserDefaults] stringForKey:@"password"];
将安全数据存储在不安全的文件中(用户默认设置)通常不是一个好主意。查看 Keychain Services,它会加密敏感的登录信息等。