我正在使用 Apple 提供的 Keychain 包装类。在我的应用程序中,我想存储和检索登录用户的用户名和密码。当应用程序再次启动时,它应该检查钥匙串中的登录凭据并让用户进入应用程序(自动登录)。尝试了一些示例代码。什么都没解决。请帮助我完成此操作。
谢谢。
我正在使用 Apple 提供的 Keychain 包装类。在我的应用程序中,我想存储和检索登录用户的用户名和密码。当应用程序再次启动时,它应该检查钥匙串中的登录凭据并让用户进入应用程序(自动登录)。尝试了一些示例代码。什么都没解决。请帮助我完成此操作。
谢谢。
这是如何使用:
PDKeychainBindings *bindings = [PDKeychainBindings sharedKeychainBindings];
[bindings setObject:@"myuser" forKey:@"username"];
[bindings setObject:@"kmypass" forKey:@"password"];
//How to retrieve
NSString *username = [bindings objectForKey:@"username"];
NSString *password = [bindings objectForKey:@"password"];
您可以使用钥匙串访问更安全地保存您的凭证信息。为此,请遵循以下指南和示例。
1)Keychain Services Programming Guide
你在苹果的这份文件中找到了所有你想要的东西。
苹果的这个示例代码展示了如何添加、删除和更新钥匙串值。
如果您对此有任何问题,请告诉我。希望这篇对你有帮助。
#import "SFHFKeychainUtils.h"
#define KEYCHAIN_SERVICE_KEY @"MyKey"
#define KEYCHAIN_ID @"agsfs46edt3g3jd38jh3g3g3g3g38f3dkiuytr453"
#define KEYCHAIN_PSD @"a1s2s3d4edt3g3jd38jh3g3g3g3g38f3dfgffgdd"
//去检查
NSError *error = nil;
NSString *password = [SFHFKeychainUtils getPasswordForUsername:KEYCHAIN_ID andServiceName:KEYCHAIN_SERVICE_KEY error:&error];
if ([password isEqualToString:KEYCHAIN_PSD])
return YES;
//保存
NSError *error = nil;
[SFHFKeychainUtils storeUsername:KEYCHAIN_ID andPassword:KEYCHAIN_PSD forServiceName:KEYCHAIN_SERVICE_KEY updateExisting:YES error:&error];
看看ACSimpleKeychain。它提供了钥匙串的简单抽象,让您可以轻松安全地保存密码。
例如,保存用户名和密码:
if ([keychain storeUsername:@"user1" password:@"password" identifier:@"account1" forService:@"twitter"])
{
NSLog(@"SAVED credentials for username 'user1' credentials identifier 'account1'");
}
找回密码:
NSDictionary *credentials = [keychain credentialsForUsername:@"user1" service:@"twitter"];
NSLog(@"CREDENTIALS: service: %@, identifier: %@, username: %@, password: %@",
[credentials valueForKey:ACKeychainService],
[credentials valueForKey:ACKeychainIdentifier],
[credentials valueForKey:ACKeychainUsername],
[credentials valueForKey:ACKeychainPassword]);