安全与权限组件

安全与权限组件用于处理应用的安全需求,包括权限管理、数据加密和生物识别认证。

提示:这些组件通常需要引入第三方包,并配置相应的平台权限。
📱 渲染效果预览
📷
相机
已授权
📍
位置
已授权
🎤
麦克风
已拒绝
📁
存储
已拒绝
📱 渲染效果预览
{ "token": "user_token_value", "password": "encrypted_password", "api_key": "secure_api_key" }

Permission Handler

Permission Handler 用于请求和管理应用权限。

import 'package:permission_handler/permission_handler.dart';

// 请求相机权限
final status = await Permission.camera.request();
if (status.isGranted) {
  // 权限已授予
} else if (status.isDenied) {
  // 权限被拒绝
} else if (status.isPermanentlyDenied) {
  // 权限被永久拒绝,需要引导用户到设置页面
  openAppSettings();
}

// 检查权限状态
final locationStatus = await Permission.location.status;
📱 渲染效果预览
👆
生物识别认证
支持指纹、面容识别

Secure Storage

Secure Storage 用于安全地存储敏感数据。

import 'package:flutter_secure_storage/flutter_secure_storage.dart';

final storage = FlutterSecureStorage();

// 存储数据
await storage.write(key: 'token', value: 'user_token_value');

// 读取数据
final token = await storage.read(key: 'token');

// 删除数据
await storage.delete(key: 'token');

// 删除所有数据
await storage.deleteAll();

// 检查键是否存在
final hasToken = await storage.containsKey(key: 'token');
📱 渲染效果预览
Hello, World!
🔐
U2FsdGVkX1...
🔓
Hello, World!

Biometric Auth

Biometric Auth 用于生物识别认证(指纹、面容等)。

import 'package:local_auth/local_auth.dart';

final localAuth = LocalAuthentication();

// 检查是否支持生物识别
bool canCheckBiometrics = await localAuth.canCheckBiometrics;
List availableBiometrics = await localAuth.getAvailableBiometrics();

// 进行生物识别认证
bool isAuthenticated = await localAuth.authenticate(
  localizedReason: '请验证您的身份',
  options: AuthenticationOptions(
    stickyAuth: true,
    biometricOnly: true,
  ),
);

if (isAuthenticated) {
  // 认证成功
} else {
  // 认证失败
}
📱 渲染效果预览
🔑 iOS Keychain
安全存储敏感数据
仅限 iOS 平台

Encryption

使用加密算法保护数据安全。

import 'package:encrypt/encrypt.dart';

// AES 加密
final key = Key.fromUtf8('32-character-long-key-here!!');
final iv = IV.fromLength(16);
final encrypter = Encrypter(AES(key));

// 加密
final encrypted = encrypter.encrypt('Hello, World!', iv: iv);

// 解密
final decrypted = encrypter.decrypt(encrypted, iv: iv);

// 使用 base64
final encryptedBase64 = encrypted.base64;
final decryptedBase64 = encrypter.decrypt64(encryptedBase64, iv: iv);
📱 渲染效果预览
🔑 iOS Keychain
安全存储敏感数据
仅限 iOS 平台

Keychain

Keychain 用于在 iOS 设备上安全存储数据。

import 'package:flutter_keychain/flutter_keychain.dart';

// 保存到 Keychain
await FlutterKeychain.put(key: 'password', value: 'secret123');

// 从 Keychain 读取
final password = await FlutterKeychain.get(key: 'password');

// 从 Keychain 删除
await FlutterKeychain.remove(key: 'password');
安全最佳实践:
  • 永远不要在代码中硬编码敏感信息
  • 使用 HTTPS 进行网络通信
  • 对敏感数据进行加密存储
  • 及时请求必要的权限
  • 使用生物识别认证增强用户体验
  • 定期更新安全库和依赖
平台配置:
  • Android: 在 AndroidManifest.xml 中配置权限
  • iOS: 在 Info.plist 中配置权限描述