【问题标题】:How to strore URL in keychain如何将 URL 存储在钥匙串中
【发布时间】:2014-12-22 05:46:31
【问题描述】:

我想将 URL 存储在用于将设备指向特定服务器的设备钥匙串中。当应用程序第一次启动时,它会将 URL 存储在钥匙串中。

【问题讨论】:

  • 为什么在钥匙串里?这个 URL 是私有数据吗?如果您只需要持久化数据,还有更好的存储位置。
  • 请提出其他方法
  • NSUserDefaults 是最明显的。

标签: ios objective-c security keychain


【解决方案1】:
UITextField *url = [[UITextField alloc] initWithFrame:CGRectMake(40, 30, 240, 30)];
[url setBorderStyle:UITextBorderStyleRoundedRect];

KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"TestAppData" accessGroup:nil];

写入钥匙串-

// 将 URL 存储到钥匙串

Nsstring *strURL=@"abcd" 
[keychain setObject:strURL forKey:(id)kSecAttrAccount];

从钥匙串中读取-

// 从钥匙串中获取 AcessToken(如果存在)

[url setText:[keychain objectForKey:(id)kSecAttrAccount]];

注意事项: 从钥匙串中写入和检索值似乎在模拟器中不起作用。 卸载应用程序不会从钥匙串中删除项目。如果您在设备上运行演示应用程序并卸载该应用程序,用户名和密码将保留在钥匙串中(固件重置当然会删除钥匙串值)。

【讨论】:

  • 尼基塔,感谢您的回答。但是,当您当时处理帐户信息时,我们使用“kSecAttrAccount”。同样,如果我们使用一些其他信息,我们使用“kSecValueData”。你可以详细了解一下所以使用的连击方式。
  • 感谢 Nikita Khandelwal,但我已经使用 kSecAttrAccount 和 kSecValueData 存储了密钥和值。还有其他密钥可以存储 url 吗?
【解决方案2】:

是的维纳亚克,

有与其类型相关的关键用户数量。请在下面找到。

kSecAttrAccessGroup         -       CFStringRef
kSecAttrCreationDate        -       CFDateRef
kSecAttrModificationDate    -       CFDateRef
kSecAttrDescription         -       CFStringRef
kSecAttrComment             -       CFStringRef
kSecAttrCreator             -       CFNumberRef
kSecAttrType                -       CFNumberRef
kSecAttrLabel               -       CFStringRef
kSecAttrIsInvisible         -       CFBooleanRef
kSecAttrIsNegative          -       CFBooleanRef
kSecAttrAccount             -       CFStringRef
kSecAttrService             -       CFStringRef
kSecAttrGeneric             -       CFDataRef

【讨论】:

    【解决方案3】:

    另一种方法是将其存储在 plist 文件中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 2014-08-24
      • 2021-10-01
      • 2014-08-09
      相关资源
      最近更新 更多