我要认证only使用PassCode
甚至设备有Touch ID
特征。我在用着.deviceOwnerAuthentication
评估政策方法。当我使用这个时,
- 如果用户已注册触摸 ID --> 始终要求提供触摸 ID
- 如果用户尚未注册 touch id --> 则仅要求输入密码
我想要的是,即使用户已经注册了touch id
,仅要求passcode
。希望您对此提供帮助。
这可以使用安全框架来完成SecAccessControl
通过设置SecAccessControlCreateFlags
as .devicePasscode
.
添加钥匙扣项目,
let secAccessControlbject: SecAccessControl = SecAccessControlCreateWithFlags(kCFAllocatorDefault,
kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
.devicePasscode,
nil)!
let dataToStore = "AnyData".data(using: .utf8)!
let insertQuery: NSDictionary = [
kSecClass: kSecClassGenericPassword,
kSecAttrAccessControl: secAccessControlbject,
kSecAttrService: "PasscodeAuthentication",
kSecValueData: dataToStore as Any,
]
let insertStatus = SecItemAdd(insertQuery as CFDictionary, nil)
要使用密码屏幕进行身份验证,访问已保存的项目,
let query: NSDictionary = [
kSecClass: kSecClassGenericPassword,
kSecAttrService : "PasscodeAuthentication",
kSecUseOperationPrompt : "Sign in"
]
var typeRef : CFTypeRef?
let status: OSStatus = SecItemCopyMatching(query, &typeRef) //This will prompt the passcode.
if (status == errSecSuccess)
{
print("Authentication Success")
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)