我有一个注册表单,其中有很多字段,我将以新用户输入的服务器上的json数据的形式保存所有字段的数据。 在所有这些字段中,我有两个字段用户名和密码。我想将它们存储在钥匙串中 我使用以下代码:
[[KeychainItemWrapper alloc] initWithIdentifier:@"YourAppLogin" accessGroup:nil];
[keychainItem setObject:@"passtextfield.text" forKey:kSecValueData];
[keychainItem setObject:@"usernametextfield.text" forKey:kSecAttrAccount];
因此,每当新用户提交他们的注册表格时,用户名和密码将分别用钥匙保存在钥匙串中。
现在我的问题是 - 我有一个其他登录页面,当我必须以用户身份启动应用程序时,我必须首先登录我在注册时作为用户输入的用户名和密码。
现在告诉我如何登录和检索钥匙串数据的代码。 我应该在上面使用的(accessGroup:nil)中进行任何更改。 提前致谢
答案 0 :(得分:0)
访问组不是服务器端,而是iPhone端。来自文档:
访问组可用于在两个或多个应用程序之间共享钥匙串项。对于共享密钥链项的应用程序,应用程序必须在其keychain-access-groups权利中列出公共访问组,并且将共享项添加到密钥链的应用程序必须将此共享访问组名称指定为此密钥的值在字典中传递给SecItemAdd函数。
如果您有两个登录页面,您的应用程序逻辑将需要存储两个用户/密码组合。因此,您需要将kSecAttrAccount
指向当前有效的帐户。
- 编辑
根据你的评论,我知道你想要一些类似于Safari中的密码记忆功能的东西吗?
所以你有Username1 / password1和username2 / password2。用户名“x”是您的kSecAttrAccount
。
当用户输入用户名时,请使用textFieldDidEndEditing:
。在textFieldDidEndEditing
中,在username1
或username2
上扫描输入的字符串以查找匹配项。如果有任何匹配,则检索相应的密码。如果没有匹配,则假设它是一个新的用户名/密码组合并存储这个新的。
如果您想在打字时想要获得一定的喜好并进行扫描,请阅读textField:shouldChangeCharactersInRange:replacementString: