keychain - Keychain whenPasscodeSetThisDeviceOnly 在密码重置后擦除钥匙串值两次
问题描述
让我们考虑使用 KeychainAccess 库:
private let keychain = Keychain(service: "som.service.name")
func getProperty(_ prop: String) -> String? {
return try? keychain
.get(prop)
}
func setProperty(_ prop: String, value: String) {
try? keychain
.accessibility(.whenPasscodeSetThisDeviceOnly)
.set(value, key: prop)
}
问题:
当变量存储在带有“.whenPasscodeSetThisDeviceOnly”标志的钥匙串中时,一旦用户删除设备的密码,它就会被擦除。设置新密码后,应该可以存储和检索新值,但似乎第一次设备锁定至少 10 秒后,钥匙串项目再次被擦除。
重现步骤:
- 设置设备的密码 - 存储/检索值(工作正常)
- 删除设备的密码(不要更改 - 更改密码不会影响钥匙串的持久性)
- 设置设备的密码(不要锁定设备,只需运行应用程序)
- 尝试检索旧值 -> 值被擦除(这是预期的)
- 存储/检索新值(工作正常)
- 锁定设备至少 10 秒
- 尝试检索存储的值(问题:再次擦除值)
- 从现在开始(在第一个 10 秒锁定之后),钥匙串正常工作,以下设备锁定不再影响钥匙串持久性
在设备上再次设置密码并且应用程序用户存储新值后,我需要始终可以检索钥匙串值。
为什么我锁定设备至少 10 秒后它又被擦除了?
任何帮助、想法、解决方法将不胜感激。
解决方案
推荐阅读
- powershell - 调用命令中的导入模块
- c++ - 未使用函数参数的编译器优化
- javascript - Websocket 连接错误 - ERR_CONNECTION_REFUSED
- android - 无法以编程方式将样式设置为 LinearLayout
- javascript - 检查对象键是否存在并且在一个语句中为真
- disk - windows 无法检索有关此计算机上磁盘的信息
- android - 当我添加 android 的滚动视图时,AppBar 正在隐藏我的内容
- docker - 用 docker-compose.prod.yml 覆盖 dockercompose.yml
- api - 尝试添加查询参数 MKM API 2.0、OAuth 1.0 时出现 401 错误
- python - 将流程图转换为 python 代码(战舰的 AI)