HarmonyOS鸿蒙Next中封装系统认证方法分享(支持密码、指纹、人脸)
HarmonyOS鸿蒙Next中封装系统认证方法详解介绍,支持密码、指纹、人脸。
// 指纹或面容ID(生物特征识别)
import { userAuth } from '@kit.UserAuthenticationKit'
class UserAuthManager {
// 认证信任等级,等级越高,面容指纹检测时越严格
private authTrustLevel: userAuth.AuthTrustLevel = userAuth.AuthTrustLevel.ATL3
// 认证类型列表
private authType: userAuth.UserAuthType[] = [
userAuth.UserAuthType.PIN, // 锁屏密码
userAuth.UserAuthType.FACE, // 面容
userAuth.UserAuthType.FINGERPRINT,// 指纹
]
// 设置认证参数
private authParam: userAuth.AuthParam = {
challenge: new Uint8Array([49, 49, 49, 49, 49, 49]), // 挑战值,用来防重放攻击。
authType: this.authType, // 认证类型列表
authTrustLevel: this.authTrustLevel, // 认证信任等级
}
// 配置认证界面
private widgetParam: userAuth.WidgetParam = {
title: '请进行身份认证', // 用户认证界面的标题, 仅在 PIN/指纹 密码时展示
}
// 查询认证能力是否支持,有一项支持即可
checkUserAuthSupport() {
// 遍历认证类型列表
const res = this.authType.map((item) => {
try {
// 检测是否可用
userAuth.getAvailableStatus(item, this.authTrustLevel)
return true
} catch {
return false
}
})
// some 条件中有一项为 true,结果就返回 true
// every 条件中所有项为 true,结果才返回 true
// 有一项支持即可
return res.some(v => v === true)
}
startUserAuth(): Promise<boolean> {
return new Promise((resolve, reject) => {
try {
// 1. 获取认证对象
const userAuthInstance = userAuth.getUserAuthInstance(this.authParam, this.widgetParam)
// 2. 订阅用户身份认证结果
userAuthInstance.on('result', {
// 返回认证结果
onResult(result) {
// 如果验证成功/失败
if (result.result === userAuth.UserAuthResultCode.SUCCESS) {
resolve(true)
} else {
resolve(false)
}
// 认证结束,取消订阅认证结果(释放资源)
userAuthInstance.off('result')
}
})
// 3. 执行用户认证
userAuthInstance.start()
} catch (e) {
reject(e)
}
})
}
}
export const userAuthManager = new UserAuthManager()
更多关于HarmonyOS鸿蒙Next中封装系统认证方法分享(支持密码、指纹、人脸)的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于HarmonyOS鸿蒙Next中封装系统认证方法分享(支持密码、指纹、人脸)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,可以通过@ohos.userIAM.userAuth
模块封装系统认证方法,支持密码、指纹和人脸识别。首先,引入相关模块,然后使用userAuth.getAuthInstance
创建认证实例,设置认证类型(如userAuth.AuthType.PIN
、userAuth.AuthType.FACE
等),最后调用auth
方法进行认证。认证结果通过回调函数返回,开发者可根据结果进行后续处理。