我一直在学习如何使用Keychain存储用户名和密码组合。我有以下方法称为“清除密码”,但它似乎删除了帐户名称的整个钥匙串项目:
-(OSStatus)clearPassword{
NSDictionary *query = @{ (__bridge id)kSecClass : (__bridge id)kSecClassGenericPassword,
(__bridge id)kSecAttrAccount : self.accountName};
CFDictionaryRef queryRef = (__bridge CFDictionaryRef)query;
OSStatus status = SecItemDelete(queryRef);
NSAssert(status == errSecSuccess || errSecItemNotFound, @"Unable to delete keychain item");
return status;
}
是否可以删除JUST特定帐户名的密码,这样我就可以在没有密码的密钥链中保留帐户名,这样当用户登录应用程序时,我可以检查他们输入的帐户名是否是在钥匙串已经?如果是这样,我如何制定查询词典来完成这个?
答案 0 :(得分:2)
我同意Krumelur的评论。当我在过去完成此操作时,我已将最后签名的用户名存储在NSUserDefaults中。如果该用户名在钥匙串中有一个条目,则该用户将自动登录。如果没有,则提示用户登录并将其凭据存储在钥匙串中,直到他们退回。