Flutter凭证管理插件credentials_manager的使用
Flutter凭证管理插件credentials_manager的使用
特性
- 登录凭证存储;
- 生物识别认证;
开始使用
1. 在pubspec.yaml
中导入库
dependencies:
credentials_manager: ^1.0.1
2. 配置Android设备
你需要更新你的MainActivity
类,使其继承自FlutterFragmentActivity
而不是FlutterActivity
。
Java (MainActivity.java):
import io.flutter.embedding.android.FlutterFragmentActivity;
public class MainActivity extends FlutterFragmentActivity {
// ...
}
Kotlin (MainActivity.kt):
import io.flutter.embedding.android.FlutterFragmentActivity
class MainActivity: FlutterFragmentActivity() {
// ...
}
同时,更新你的项目AndroidManifest.xml
文件以包含USE_BIOMETRIC
权限:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.app">
<uses-permission android:name="android.permission.USE_BIOMETRIC"/>
</manifest>
3. 配置iOS设备
更新你的info.plist
文件:
<key>NSFaceIDUsageDescription</key>
<string>授予访问权限将允许您在本应用中使用面部识别。</string>
4. 导入CredentialsManager包
import 'package:credentials_manager/credentials_manager.dart';
5. 使用示例
/// 创建凭证管理器实例。
final credentialsManager = CredentialsManager(
/// 安全存储的标识符。
storageKey: 'storage_key',
/// 加密的SharedPreferences仅在API 23及以上版本可用。
useAndroidEncryptedSharedPreferences: true
);
/// 创建一个新的凭证模型。
final credentialModel = CredentialModel(
id: 'user_id', // 必填
loginOrEmail: 'user_login', // 必填
password: 'user_password', // 必填
name: 'user_name', // 可选
imageUrl: 'user_image_url', // 可选
);
/// 保存凭证。
await credentialsManager.saveCredential(credentialModel);
/// 加载所有已保存的凭证。
final List<CredentialModel> savedCredentials = await credentialsManager.getSavedCredentials();
/// 移除单个凭证。
await credentialsManager.removeCredential(credentialModel);
/// 移除所有已保存的凭证。
await credentialsManager.removeAllCredentials();
/// 请求认证。
final bool isAuth = await credentialsManager.requestAuth(
/// 显示给用户的认证消息。
authReasonMessage: '请进行身份验证以继续。',
/// 防止使用非生物识别的本地认证,如PIN、密码或图案。
biometricOnly: false,
/// 如果用户设备不支持生物识别,忽略该结果。
cannotAuthResult: false,
);
更多关于Flutter凭证管理插件credentials_manager的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter凭证管理插件credentials_manager的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用credentials_manager
插件来管理凭证的示例代码。这个插件可以帮助你安全地存储和检索敏感信息,如用户名、密码或API密钥。
首先,你需要在你的pubspec.yaml
文件中添加credentials_manager
依赖:
dependencies:
flutter:
sdk: flutter
credentials_manager: ^x.y.z # 替换为最新版本号
然后运行flutter pub get
来安装依赖。
接下来是一个简单的示例,演示如何使用credentials_manager
来存储和检索凭证:
1. 导入插件
在你的Dart文件中导入credentials_manager
插件:
import 'package:credentials_manager/credentials_manager.dart';
2. 存储凭证
使用CredentialsManager.store
方法来存储凭证。例如,存储一个API密钥:
void storeCredentials() async {
String serviceName = "MyAppAPI";
String account = "user123";
String password = "api_key_here";
try {
bool success = await CredentialsManager.store(
serviceName: serviceName,
account: account,
password: password,
);
if (success) {
print("Credentials stored successfully.");
} else {
print("Failed to store credentials.");
}
} catch (e) {
print("Error storing credentials: $e");
}
}
3. 检索凭证
使用CredentialsManager.retrieve
方法来检索凭证:
void retrieveCredentials() async {
String serviceName = "MyAppAPI";
String account = "user123";
try {
String? password = await CredentialsManager.retrieve(
serviceName: serviceName,
account: account,
);
if (password != null) {
print("Retrieved credentials: $password");
} else {
print("No credentials found for the given service and account.");
}
} catch (e) {
print("Error retrieving credentials: $e");
}
}
4. 删除凭证
使用CredentialsManager.delete
方法来删除凭证:
void deleteCredentials() async {
String serviceName = "MyAppAPI";
String account = "user123";
try {
bool success = await CredentialsManager.delete(
serviceName: serviceName,
account: account,
);
if (success) {
print("Credentials deleted successfully.");
} else {
print("Failed to delete credentials.");
}
} catch (e) {
print("Error deleting credentials: $e");
}
}
5. 使用示例
你可以在你的Flutter应用中调用这些函数来管理凭证。例如,在一个按钮点击事件中调用这些函数:
import 'package:flutter/material.dart';
import 'package:credentials_manager/credentials_manager.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Credentials Manager Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () async {
await storeCredentials();
},
child: Text('Store Credentials'),
),
ElevatedButton(
onPressed: () async {
await retrieveCredentials();
},
child: Text('Retrieve Credentials'),
),
ElevatedButton(
onPressed: () async {
await deleteCredentials();
},
child: Text('Delete Credentials'),
),
],
),
),
),
);
}
}
这个示例展示了如何使用credentials_manager
插件在Flutter应用中存储、检索和删除凭证。注意,这个插件的实际行为可能会根据平台(iOS和Android)有所不同,并且可能需要在相应的原生代码中配置一些权限。