身份验证

AppStudio AppFramework 提供了一种身份验证插件,该插件通过用户在所支持设备上的生物识别签名对其进行身份验证。您可以将此插件与安全存储结合使用,来存储和访问凭据、令牌或其他任何敏感信息。要使用此功能,您首先需要包含以下 import 语句:

import ArcGIS.AppFramework.Authentication 1.0

有关此功能的示例,请参阅 ArcGIS AppStudioAppStudio 示例 GitHub 资料档案库中提供的示例应用程序。

生物识别身份验证器

BiometricAuthenticator 组件支持通过 iOS、macOS、Android 和 Windows 平台的指纹扫描以及 iPhone 10 及更高版本的人脸识别进行身份验证。要使用此功能,您的应用程序必须启用生物识别身份验证,该操作可在设置 > 功能中完成。

要使用指纹身份验证,用户的设备必须具有内置指纹传感器或便携式读取器,才能在其设备上启用此功能,且用户必须将其指纹注册到其设备中。 以下代码示例使用 supportedactivatederrorMessage 属性来显示是否支持此功能。如果无法使用身份验证器,则会显示错误信息。

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;
}

在本主题中
  1. 生物识别身份验证器