指紋 (生物識別) 驗證 (HTML)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
您可以在使用者必須同意特定動作時加入一項指紋 (生物識別) 驗證要求,以增強應用程式的安全性。 例如,您可以在授權應用程式內購買之前或授與限制資源的存取權之前要求指紋驗證。您可以使用 Windows.Security.Credentials.UI 命名空間中的 UserConsentVerifier 類別來管理指紋驗證。
若要查明裝置是否具有指紋辨識器,請呼叫 UserConsentVerifier.CheckAvailabilityAsync 方法。即使裝置支援指紋驗證,您的應用程式仍應在 [設定] 中為使用者提供啟用或停用指紋驗證的選項。如需有關建立這個設定的詳細資訊,請參閱新增應用程式設定。
下列範例顯示一個可查看目前電腦是否支援指紋驗證的方法,然後會傳回一個含有結果的訊息。
function checkFingerprintAvailability() {
try {
// Check the availability of fingerprint authentication.
Windows.Security.Credentials.UI.UserConsentVerifier.checkAvailabilityAsync().then(
function (ucvAvailability) {
switch (ucvAvailability)
{
case Windows.Security.Credentials.UI.UserConsentVerifierAvailability.available:
outputDiv.innerHTML = "<br/>Fingerprint verification is available.";
break;
case Windows.Security.Credentials.UI.UserConsentVerifierAvailability.deviceBusy:
outputDiv.innerHTML = "<br/>Biometric device is busy.";
break;
case Windows.Security.Credentials.UI.UserConsentVerifierAvailability.deviceNotPresent:
outputDiv.innerHTML = "<br/>No biometric device found.";
break;
case Windows.Security.Credentials.UI.UserConsentVerifierAvailability.disabledByPolicy:
outputDiv.innerHTML = "<br/>Biometric verification is disabled by policy.";
break;
case Windows.Security.Credentials.UI.UserConsentVerifierAvailability.notConfiguredForUser:
outputDiv.innerHTML = "<br/>The user has no fingerprints registered. Please add a fingerprint to the " +
"fingerprint database and try again.";
break;
default:
outputDiv.innerHTML = "<br/>Fingerprints verification is currently unavailable.";
break;
}
});
}
catch (ex) {
outputDiv.innerHTML = "<br/>Fingerprint authentication availability check failed: " + ex.toString();
}
}
若要要求使用者同意指紋掃描,請呼叫 UserConsentVerifier.RequestVerificationAsync 方法。為了讓指紋驗證能運作,使用者必須先將指紋「簽章」加到指紋資料庫。當您呼叫 UserConsentVerifier.RequestVerificationAsync 時,使用者會看到一個要求指紋掃描的強制回應對話方塊。您可以提供一個訊息給 UserConsentVerifier.RequestVerificationAsync 方法,使用者會在強制回應對話方塊中看見該訊息,如下列影像所示。
下列範例顯示一個要求指紋驗證的方法,然後會傳回一個含有結果的訊息。
function requestConsent(userMessage) {
if (!userMessage) {
userMessage = "Please provide fingerprint verification.";
}
try {
// Request the logged on user's consent via fingerprint swipe.
Windows.Security.Credentials.UI.UserConsentVerifier.requestVerificationAsync(userMessage)
.then(
function (consentResult) {
switch (consentResult) {
case Windows.Security.Credentials.UI.UserConsentVerificationResult.verified:
outputDiv.innerHTML = "<br/>Fingerprint verified.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.deviceBusy:
outputDiv.innerHTML = "<br/>Biometric device is busy.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.deviceNotPresent:
outputDiv.innerHTML = "<br/>No biometric device found.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.disabledByPolicy:
outputDiv.innerHTML = "<br/>Biometric verification is disabled by policy.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.notConfiguredForUser:
outputDiv.innerHTML = "<br/>The user has no fingerprints registered. Please add a fingerprint to the " +
"fingerprint database and try again.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.retriesExhausted:
outputDiv.innerHTML = "<br/>There have been too many failed attempts. Fingerprint authentication canceled.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.canceled:
outputDiv.innerHTML = "<br/>Fingerprint authentication canceled.";
break;
default:
outputDiv.innerHTML = "<br/>Fingerprint authentication is currently unavailable.";
break;
}
});
}
catch (ex) {
outputDiv.innerHTML = "<br/>Fingerprint authentication failed: " + ex.toString();
}
}