Flutter如何实现生物识别认证

在Flutter应用中如何集成生物识别认证功能?我想实现指纹或面部识别登录,但不太清楚具体的实现步骤。请问需要用到哪些插件?本地认证和服务器认证哪种方案更安全?能否提供一个简单的代码示例?另外,不同Android/iOS版本对生物识别的支持有差异吗?

2 回复

Flutter使用local_auth插件实现生物识别认证。步骤如下:

  1. 添加依赖到pubspec.yaml
  2. 检查设备支持的生物识别类型。
  3. 调用authenticate()方法进行认证。 支持指纹、面容等,需配置iOS的Info.plist和Android权限。

更多关于Flutter如何实现生物识别认证的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中实现生物识别认证可以使用 local_auth 插件。以下是实现步骤:

  1. 添加依赖
    pubspec.yaml 中添加:

    dependencies:
      local_auth: ^2.1.2
    
  2. 配置平台权限

    • Android
      AndroidManifest.xml 中添加权限:

      <uses-permission android:name="android.permission.USE_BIOMETRIC" />
      

      MainActivity.kt 中启用 Flutter 片段兼容性(仅限 Android 12+)。

    • iOS
      Info.plist 中添加描述:

      <key>NSFaceIDUsageDescription</key>
      <string>需要生物识别以进行身份验证</string>
      
  3. 实现认证逻辑

    import 'package:local_auth/local_auth.dart';
    
    class BiometricAuth {
      static final LocalAuthentication auth = LocalAuthentication();
    
      // 检查设备是否支持生物识别
      static Future<bool> canAuthenticate() async {
        return await auth.canCheckBiometrics || await auth.isDeviceSupported();
      }
    
      // 执行认证
      static Future<bool> authenticate() async {
        try {
          return await auth.authenticate(
            localizedReason: '请验证身份以继续',
            options: const AuthenticationOptions(
              biometricOnly: true, // 仅使用生物识别
            ),
          );
        } catch (e) {
          return false;
        }
      }
    }
    
  4. 使用示例

    ElevatedButton(
      onPressed: () async {
        if (await BiometricAuth.canAuthenticate()) {
          bool success = await BiometricAuth.authenticate();
          print('认证结果: $success');
        }
      },
      child: const Text('生物识别登录'),
    )
    

注意事项

  • 测试时需使用真机,模拟器可能不支持生物识别。
  • 在 iOS 上首次使用 Face ID/Touch ID 需用户授权。
  • 可自定义 AuthenticationOptions 调整认证行为(如使用 PIN 码后备)。
回到顶部