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

1 回复

更多关于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)有所不同,并且可能需要在相应的原生代码中配置一些权限。

回到顶部