AppStudio AppFramework 提供了一种身份验证插件,该插件通过用户在所支持设备上的生物识别签名对其进行身份验证。您可以将此插件与安全存储结合使用,来存储和访问凭据、令牌或其他任何敏感信息。要使用此功能,您首先需要包含以下 import 语句:
import ArcGIS.AppFramework.Authentication 1.0
有关此功能的示例,请参阅 ArcGIS AppStudio 或 AppStudio 示例 GitHub 资料档案库中提供的示例应用程序。
生物识别身份验证器
BiometricAuthenticator 组件支持通过 iOS、macOS、Android 和 Windows 平台的指纹扫描以及 iPhone 10 及更高版本的人脸识别进行身份验证。要使用此功能,您的应用程序必须启用生物识别身份验证,该操作可在设置 > 功能中完成。
要使用指纹身份验证,用户的设备必须具有内置指纹传感器或便携式读取器,才能在其设备上启用此功能,且用户必须将其指纹注册到其设备中。 以下代码示例使用 supported、activated 和 errorMessage 属性来显示是否支持此功能。如果无法使用身份验证器,则会显示错误信息。
Text {
id: supportCheck
text: BiometricAuthenticator.supported ? "Fingerprint supported" : "Fingerprint not supported"
}
Text {
id: activeCheck
text: BiometricAuthenticator.activated ? "Fingerprint activated" : "Fingerprint not activated"
anchors.top: supportCheck.bottom
}
Text {
id: errormessage
text: BiometricAuthenticator.errorMessage
anchors.top: activeCheck.bottom
}
BiometricAuthenticator 组件具有 authenticate 方法,可显示本机指纹身份验证对话框;并具有 message 属性,用于在对话框上设置身份验证消息。要使用生物识别身份验证,则您必须设置 message 属性并调用 authenticate 方法,且需记得在调用 authenticate 之前必须设置 message。以下代码示例显示了如何使用 authenticate 方法并带有一条指定消息:
Component.onCompleted: {
BiometricAuthenticator.message = "Authenticate to log into your account"
BiometricAuthenticator.authenticate()
}
BiometricAuthenticator 包含两种可用于显示身份验证过程结果的信号。当身份验证成功时,会发出接受信号;而在因出错或取消身份验证而导致身份验证失败时,则会发出拒绝信号并给出相关说明信息。以下代码示例使用上述信号返回扫描结果,每个可能出现的故障情况都会附带一条简短的用户可读字符串:
Text {
id: status anchors.top: errormessage.bottom
}
Connections {
target: BiometricAuthenticator
onAccepted: {
status.text = "Success"
}
onRejected: {
status.text = constructMessage(reason) }
}
function constructMessage(reason) {
var result = "";
switch (reason) {
case 1:
result = qsTr("Cancelled By User");
break;
case 2:
result = qsTr("Invalid Credentials");
break;
case 3:
result = qsTr("Not Configured");
break;
case 4:
result = qsTr("User Fallback");
break;
case 5:
result = qsTr("Permission Denied");
break;
case 6:
result = qsTr("Biometric Not Supported");
break;
case 7:
result = qsTr("Bad Capture");
break;
case 8:
result = qsTr("Platform Not Supported");
break;
default:
result = qsTr("Unknown");
}
return result;
}