Ios6 使用钥匙链在iPhone应用程序中存储用户名/密码
我有一个注册表单,其中有很多字段,我将所有字段的数据以json数据的形式保存在服务器上,由新用户输入。 在所有这些字段中,我有两个字段用户名和密码。我想将它们存储在keychain中 为此,我使用以下代码:Ios6 使用钥匙链在iPhone应用程序中存储用户名/密码,ios6,Ios6,我有一个注册表单,其中有很多字段,我将所有字段的数据以json数据的形式保存在服务器上,由新用户输入。 在所有这些字段中,我有两个字段用户名和密码。我想将它们存储在keychain中 为此,我使用以下代码: [[KeychainItemWrapper alloc] initWithIdentifier:@"YourAppLogin" accessGroup:nil]; [keychainItem setObject:@"passtextfield.text" forKey:kSecValueD
[[KeychainItemWrapper alloc] initWithIdentifier:@"YourAppLogin" accessGroup:nil];
[keychainItem setObject:@"passtextfield.text" forKey:kSecValueData];
[keychainItem setObject:@"usernametextfield.text" forKey:kSecAttrAccount];
所以,每当一个新用户提交他们的注册表时,用户名和密码将分别和密钥一起保存在keychain中
现在我的问题是-我有另一个登录页面,当我必须以用户身份启动应用程序时,我必须首先使用注册时作为用户输入的用户名和密码登录
现在告诉我如何登录和检索密钥链数据的代码。
我应该对上面使用的(accessGroup:nil)进行任何更改吗。
提前感谢访问组不是服务器端,而是iPhone端。从文档中: 访问组可用于在两个或多个应用程序之间共享密钥链项目。对于共享密钥链项目的应用程序,应用程序必须在其密钥链访问组权限中列出一个公共访问组,并且将共享项目添加到密钥链的应用程序必须在传递给SecItemAdd函数的字典中指定此共享访问组名为该密钥的值 如果您有两个登录页面,您的应用程序逻辑将需要存储两个用户/密码组合。因此,您需要将
kSecAttrAccount
指向当前活动帐户
--编辑
从你的评论中,我了解到你想要类似Safari中的密码记忆功能
所以您有Username1/password1和username2/password2。用户名“x”是您的kSecAttrAccount
当用户输入用户名时,请使用textfielddidediting:
。在textfielddidediting
中,在username1
或username2
上扫描输入的字符串以查找匹配项。如果存在任何匹配项,则检索相应的密码。如果没有匹配项,则假定它是一个新的用户名/密码组合,并存储这个新组合
如果你想在他们打字时找到一个匹配项,那么请阅读
文本字段:shouldChangeCharactersRange:replacementString:
“我只有一个登录页面。用户名/密码通过注册页面存储,而不是登录页面。但是现在,当我在登录页面中输入用户名和密码时(请注意,我在某一时间或某一天之前已经完成了注册)我想从钥匙链上检查这两个密码是否存在。告诉我怎么做?