0

我有一个注册表单,其中有很多字段,我将所有字段的数据以 json 数据的形式保存在新用户输入的服务器上。在所有这些字段中,我有两个字段用户名和密码。我想将它们存储在钥匙串中,为此我使用以下代码:

[[KeychainItemWrapper alloc] initWithIdentifier:@"YourAppLogin" accessGroup:nil];

[keychainItem setObject:@"passtextfield.text" forKey:kSecValueData];
[keychainItem setObject:@"usernametextfield.text" forKey:kSecAttrAccount];

因此,每当新用户提交他们的注册表单时,用户名和密码将分别与密钥一起保存在钥匙串中。

现在我的问题是 - 我有另一个登录页面,当我必须以用户身份启动应用程序时,我必须首先使用我在注册时作为用户输入的用户名和密码登录。

现在告诉我如何登录和检索钥匙串数据的代码。我是否应该对上面使用的 (accessGroup:nil) 进行任何更改。提前致谢

4

1 回答 1

0

访问组不是服务器端,它是 iPhone 端。从文档:

访问组可用于在两个或多个应用程序之间共享钥匙串项。对于共享钥匙串项的应用程序,应用程序必须在其钥匙串访问组权利中列出一个公共访问组,并且将共享项添加到钥匙串的应用程序必须指定此共享访问组名称作为此密钥的值在传递给 SecItemAdd 函数的字典中。

如果您有两个登录页面,您的应用逻辑将需要存储两个用户/密码组合。因此,您需要指向 kSecAttrAccount当前活动的帐户。

- 编辑

从您的评论中,我了解到您想要 Safari 中的密码记住功能之类的东西?

所以你有 Username1/password1 和 username2/password2。用户名“x”是您的kSecAttrAccount.

当用户输入用户名时,使用textFieldDidEndEditing:. 在textFieldDidEndEditing扫描输入的字符串以查找匹配项username1username2。如果有任何匹配,则检索相应的密码。如果没有匹配,则假设它是一个新的用户名/密码组合并存储这个新的。

如果您想在他们键入时花哨并扫描匹配项,请继续阅读textField:shouldChangeCharactersInRange:replacementString:

于 2013-09-09T07:33:52.090 回答