安全与权限组件
安全与权限组件用于处理应用的安全需求,包括权限管理、数据加密和生物识别认证。
提示:这些组件通常需要引入第三方包,并配置相应的平台权限。
📱 渲染效果预览
📱 渲染效果预览
{
"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 平台
仅限 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 平台
仅限 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 中配置权限描述