在我以前的应用程序版本(iPhone)中,我在以下代码的密钥链中保留了值(密码):
KeychainItemWrapper * keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"KeychainTest"
accessGroup:nil];
[keychain setObject: kSecAttrAccessibleWhenUnlocked forKey:(id)kSecAttrAccessible];
[keychain setObject: @ "MySuperSecretPassword" forKey:(id)kSecValueData];
[keychain release];
并获取以下代码中的值:
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"KeychainTest"
accessGroup:nil];
[keychain setObject: kSecAttrAccessibleWhenUnlocked forKey:(id)kSecAttrAccessible];
NSString *key = [keychain objectForKey:(id)kSecValueData];
因为有时我的应用程序在后台运行,我发现了一个错误,我无法从Keychain中获取我的价值。
我通过将kSecAttrAccessible的值从kSecAttrAccessibleWhenUnlocked更改为kSecAttrAccessibleAlways来修复错误。
KeychainItemWrapper * keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"KeychainTest"
accessGroup:nil];
[keychain setObject:kSecAttrAccessibleAlways forKey:kSecAttrAccessible];
[keychain setObject: @"MySuperSecretPassword" forKey: kSecValueData];
[keychain release];
和
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"KeychainTest"
accessGroup:nil];
[keychain setObject: kSecAttrAccessibleAlways forKey:(id)kSecAttrAccessible];
NSString *key = [keychain objectForKey:(id)kSecValueData];
我的问题是:如果此更改也会对用户有所帮助,可以保存以前版本中的值。
我的bug很难恢复,所以我问这个问题。 现在,在这次改变之后,我无法恢复这个漏洞。
由于