问题描述
我的主要目标是在我的 React Native 项目中连接 swift。但让我们专注于 Swift。 我想从swift获取本地密码认证结果。
密码认证 至于密码,我可以返回结果。但是有 3 个问题。
- 用户可以多次输入他们的密码(直到密码被阻止)。而且我希望他们能够只做一次然后得到结果。
- 我无法确定用户是否在我的代码中输入了错误的密码,我只能在用户取消时返回 false。换句话说,我想在用户输入错误密码后立即关闭密码并将其返回为 false。
-
let insertStatus = SecItemAdd(insertQuery as CFDictionary,nil)
有什么用?有必要吗?
代码{
func passcodeAuthentication() -> Bool {
let reason = "Input your passcode to authenticate"
let secAccessControlbject: SecAccessControl = SecAccessControlCreateWithFlags(
kcfAllocatorDefault,kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly,.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 : reason
]
var typeRef : CFTypeRef?
let status: Osstatus = SecItemcopyMatching(query,&typeRef) //This will prompt the passcode.
// Check authentication status
if (status == errSecSuccess)
{
print("Authentication Succeeeded")
return true
} else if status == errSecUserCanceled {
print("errSecUserCanceled")
return false
} else if status == errSecInvalidAuthorityKeyID {
print("errSecInvalidAuthorityKeyID")
return false
} else if status == errSecAuthFailed {
print("errSecAuthFailed")
return false
} else {
print("Other Failed")
return false
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)