5

我正在使用 Apple 提供的 Keychain 包装类。在我的应用程序中,我想存储和检索登录用户的用户名和密码。当应用程序再次启动时,它应该检查钥匙串中的登录凭据并让用户进入应用程序(自动登录)。尝试了一些示例代码。什么都没解决。请帮助我完成此操作。

谢谢。

4

4 回答 4

16

使用PDKeyChainBindings

这是如何使用:

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"];
于 2013-02-26T11:17:47.327 回答
6

您可以使用钥匙串访问更安全地保存您的凭证信息。为此,请遵循以下指南和示例。

1)Keychain Services Programming Guide

你在苹果的这份文件中找到了所有你想要的东西。

2)GenericKeychain

苹果的这个示例代码展示了如何添加、删除和更新钥匙串值。

如果您对此有任何问题,请告诉我。希望这篇对你有帮助。

于 2013-02-26T11:17:53.803 回答
1
#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];
于 2013-02-26T10:40:01.727 回答
0

看看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]);
于 2013-02-26T10:53:49.983 回答