Ionic新手求助:禁用Android Fingerprint Auth Cordova插件取消按钮
如何禁用Android Fingerprint Auth Cordova插件的取消按钮,阻止未认证用户进入Ionic应用
我来帮你解决这个问题!你遇到的核心问题是认证弹窗的取消按钮允许用户绕过认证直接进入应用,我们可以通过两个关键步骤来处理:
1. 利用插件自带参数隐藏取消按钮
首先,AndroidFingerprintAuth的encrypt方法支持一个disableCancel参数,设置为true就能直接隐藏弹窗上的取消按钮。你只需要在调用encrypt时添加这个参数即可。
2. 处理认证取消/失败的情况,强制重新认证
即使隐藏了取消按钮,用户可能还能通过设备返回键退出弹窗,这时候我们需要在错误捕获逻辑里,重新触发认证流程,直到用户成功完成认证为止。
修改后的完整代码
import { Component } from '@angular/core'; import { AndroidFingerprintAuth } from '@ionic-native/android-fingerprint-auth/ngx'; import { Platform } from '@ionic/angular'; import { SplashScreen } from '@ionic-native/splash-screen/ngx'; import { StatusBar } from '@ionic-native/status-bar/ngx'; @Component({ selector: 'app-root', templateUrl: 'app.component.html', styleUrls: ['app.component.scss'] }) export class AppComponent { constructor( private platform: Platform, private splashScreen: SplashScreen, private statusBar: StatusBar, public androidFingerprintAuth: AndroidFingerprintAuth ) { this.initializeApp(); } initializeApp() { this.platform.ready().then(() => { this.statusBar.styleDefault(); this.splashScreen.hide(); this.checkAndInitiateAuth(); }); } // 封装认证逻辑,方便重复调用 checkAndInitiateAuth() { this.androidFingerprintAuth.isAvailable() .then((result)=> { if(result.isAvailable){ this.androidFingerprintAuth.encrypt({ clientId: 'myAppName', username: 'myUsername', password: 'myPassword', maxAttempts:5, dialogTitle:'Confirm finger print to continue', userAuthRequired:true, disableCancel: true // 新增:隐藏取消按钮 }) .then(result => { if (result.withFingerprint || result.withBackup) { console.log('认证成功!'); console.log('Encrypted credentials: ' + result.token); // 认证成功后再执行应用的初始化逻辑 } else { console.log('认证未通过,重新发起认证'); this.checkAndInitiateAuth(); // 重新触发认证 } }) .catch(error => { if (error === this.androidFingerprintAuth.ERRORS.FINGERPRINT_CANCELLED) { console.log('用户取消认证,重新发起'); this.checkAndInitiateAuth(); // 重新弹出认证窗口 } else if (error === this.androidFingerprintAuth.ERRORS.TOO_MANY_ATTEMPTS) { console.error('尝试次数过多,请稍后再试'); // 这里可以添加临时锁定逻辑,比如提示用户等待一段时间 } else { console.error('认证出错:', error); this.checkAndInitiateAuth(); // 其他错误也重新尝试认证 } }); } else { // 指纹认证不可用的情况,建议添加备用认证逻辑(比如强制密码登录) console.log('指纹认证不可用,请使用密码登录'); } }) .catch(error => { console.error('检查指纹可用性出错:', error); }); } }
关键修改说明
- 添加
disableCancel: true参数到encrypt配置中,直接隐藏弹窗的取消按钮 - 将认证逻辑封装成
checkAndInitiateAuth方法,方便在取消或失败时重复调用 - 在
then和catch块中,只要用户未成功完成认证,就重新触发认证流程,确保只有通过验证的用户才能进入应用
这样处理后,用户就无法通过取消按钮或返回键绕过认证,必须完成指纹/密码验证才能进入应用。
内容的提问来源于stack exchange,提问作者shweta babbar
相关产品推荐
相关产品推荐

