Flutter账户服务管理插件pip_services_accounts的使用

Flutter账户服务管理插件pip_services_accounts的使用

Pip.Services Logo
用户账户微服务

这是来自Pip.Services库的用户账户管理微服务。

  • 注册用户并创建其账户
  • 保存用户的描述和设置(关于、位置、语言、主题等)

该微服务目前支持以下部署选项:

  • 部署平台:独立进程、Seneca
  • 外部API:HTTP/REST、Seneca
  • 持久化:内存、平面文件、MongoDB

该微服务可选依赖于以下微服务:

合同

以下是微服务的逻辑合同。对于物理实现(HTTP/REST),请参阅特定协议的文档。

class AccountV1 implements IStringIdentifiable {
  /* Identification */
  String id;
  String login;
  String name;
  
  /* Activity tracking */
  DateTime create_time;
  bool deleted;
  bool active;

  /* User preferences */
  String about;
  String time_zone;
  String language;
  String theme;

  /* Custom fields */
  var custom_hdr;
  var custom_dat;
}

abstract class IAccountsV1 {
  Future<DataPage<AccountV1>> getAccounts(
      String correlationId, FilterParams filter, PagingParams paging);

  Future<AccountV1> getAccountById(String correlationId, String id);

  Future<AccountV1> getAccountByLogin(String correlationId, String login);

  Future<AccountV1> getAccountByIdOrLogin(String correlationId, String idOrLogin);

  Future<AccountV1> createAccount(String correlationId, AccountV1 account);

  Future<AccountV1> updateAccount(String correlationId, AccountV1 account);

  Future<AccountV1> deleteAccountById(String correlationId, String accountId);
}

下载

目前,获取该微服务的唯一方法是从GitHub仓库直接克隆。

git clone git@github.com:pip-services-users/pip-services-accounts-dart.git

Pip.Service团队正在努力实现打包,并使其稳定版本可供下载。

运行

在微服务文件夹的根目录下添加config.yaml文件,并设置配置参数。

以下是微服务配置的示例:

---
# 容器描述符
- descriptor: "pip-services:context-info:default:default:1.0"
  name: "pip-services-accounts"
  description: "Accounts microservice for pip-services"

# 控制台日志
- descriptor: "pip-services:logger:console:default:1.0"
  level: "trace"

# 性能计数器,将值发布到日志
- descriptor: "pip-services:counters:log:default:1.0"
  level: "trace"

{{#MEMORY_ENABLED}}
# 内存持久化。仅用于测试!
- descriptor: "pip-services-accounts:persistence:memory:default:1.0"
{{/MEMORY_ENABLED}}

{{#FILE_ENABLED}}
# 文件持久化。用于测试或简单的独立部署
- descriptor: "pip-services-accounts:persistence:file:default:1.0"
  path: {{FILE_PATH}}{{^FILE_PATH}}"./data/accounts.json"{{/FILE_PATH}}
{{/FILE_ENABLED}}

{{#MONGO_ENABLED}}
# MongoDB持久化
- descriptor: "pip-services-accounts:persistence:mongodb:default:1.0"
  collection: {{MONGO_COLLECTION}}{{^MONGO_COLLECTION}}accounts{{/MONGO_COLLECTION}}
  connection:
    uri: {{{MONGO_SERVICE_URI}}}
    host: {{{MONGO_SERVICE_HOST}}}{{^MONGO_SERVICE_HOST}}localhost{{/MONGO_SERVICE_HOST}}
    port: {{MONGO_SERVICE_PORT}}{{^MONGO_SERVICE_PORT}}27017{{/MONGO_SERVICE_PORT}}
    database: {{MONGO_DB}}{{#^MONGO_DB}}app{{/^MONGO_DB}}
  credential:
    username: {{MONGO_USER}}
    password: {{MONGO_PASS}}
{{/MONGO_ENABLED}}

{{^MEMORY_ENABLED}}{{^FILE_ENABLED}}{{^MONGO_ENABLED}}
# 默认内持久化
- descriptor: "pip-services-accounts:persistence:memory:default:1.0"
{{/MONGO_ENABLED}}{{/FILE_ENABLED}}{{/MEMORY_ENABLED}}

# 默认控制器
- descriptor: "pip-services-accounts:controller:default:default:1.0"

# 公共HTTP端点
- descriptor: "pip-services:endpoint:http:default:1.0"
  connection:
    protocol: "http"
    host: "0.0.0.0"
    port: 8080

# HTTP端点版本1.0
- descriptor: "pip-services-accounts:service:http:default:1.0"

# 心跳服务
- descriptor: "pip-services:heartbeat-service:http:default:1.0"

# 状态服务
- descriptor: "pip-services:status-service:http:default:1.0"

有关微服务配置的更多信息,请参阅配置指南。

使用以下命令启动微服务:

dart ./bin/run.dart

使用

与微服务最简单的方式是使用客户端SDK。可用的客户端SDK列表见快速链接。

如果你使用Dart,请获取所需的库引用:

添加pip-services3-commons-dartpip-services3-rpc-dartpip-services_accounts 包:

import 'package:pip_services3_commons/pip_services3_commons.dart';
import 'package:pip_services3_rpc/pip_services3_rpc.dart';

import 'package:pip_services_accounts/pip_services_accounts.dart';

定义与微服务外部API匹配的客户端配置参数:

// 客户端配置
var httpConfig = ConfigParams.fromTuples(
	"connection.protocol", "http",
	"connection.host", "localhost",
	"connection.port", 8080
);

实例化客户端并连接到微服务:

// 创建客户端实例
var client = AccountsHttpClientV1(config);

// 配置客户端
client.configure(httpConfig);

// 连接到微服务
try {
  await client.open(null);
} catch (err) {
  // 错误处理...
}       
// 与微服务交互
// ...

现在客户端已准备好执行操作:

// 创建新账户
final ACCOUNT = AccountV1(
    id: '1',
    login: 'user1@conceptual.vision',
    name: 'Test User 1',
    deleted: false
);

// 创建账户
try {
  var account = await client.createAccount('123', ACCOUNT);
  // 对返回的账户进行操作...
} catch (err) {
  // 错误处理...
}

// 获取账户
try {
  var account = await client.getAccountByLogin(
      null,
      'somebody@somewhere.com');
  // 对账户进行操作...
} catch (err) {
  // 错误处理...
}

更多关于Flutter账户服务管理插件pip_services_accounts的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter账户服务管理插件pip_services_accounts的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


pip_services_accounts 是一个用于管理账户服务的插件,通常用于微服务架构中。它提供了一套标准的接口和工具,用于处理用户账户的创建、验证、权限管理等操作。虽然 pip_services_accounts 主要是一个通用的服务管理工具,但你可以将其集成到 Flutter 应用中,以便在移动端实现账户管理功能。

1. 安装插件

首先,你需要在 Flutter 项目中安装 pip_services_accounts 插件。你可以通过 pubspec.yaml 文件来添加依赖:

dependencies:
  pip_services_accounts: ^1.0.0  # 请根据实际情况填写版本号

然后运行 flutter pub get 来安装依赖。

2. 初始化账户服务

在使用 pip_services_accounts 之前,你需要初始化账户服务。通常,你需要配置服务连接信息、认证信息等。

import 'package:pip_services_accounts/pip_services_accounts.dart';

void main() async {
  var accountsService = AccountsService();
  
  // 配置服务连接信息
  accountsService.configure({
    'connection': {
      'uri': 'http://localhost:8080',  // 账户服务的URL
      'credentials': {
        'username': 'admin',
        'password': 'password'
      }
    }
  });

  // 打开服务连接
  await accountsService.open();
}

3. 创建账户

你可以使用 createAccount 方法来创建一个新的用户账户。

void createUserAccount() async {
  var account = Account(
    id: '12345',
    username: 'johndoe',
    email: 'johndoe@example.com',
    password: 'password123'
  );

  var result = await accountsService.createAccount(null, account);
  print('Account created: ${result.id}');
}

4. 验证账户

你可以使用 authenticate 方法来验证用户账户。

void authenticateUser() async {
  var result = await accountsService.authenticate(null, 'johndoe', 'password123');
  if (result != null) {
    print('User authenticated: ${result.username}');
  } else {
    print('Authentication failed');
  }
}

5. 获取账户信息

你可以使用 getAccountById 方法来获取指定账户的详细信息。

void getAccountInfo() async {
  var account = await accountsService.getAccountById(null, '12345');
  if (account != null) {
    print('Account info: ${account.username}, ${account.email}');
  } else {
    print('Account not found');
  }
}

6. 更新账户信息

你可以使用 updateAccount 方法来更新账户信息。

void updateUserAccount() async {
  var account = Account(
    id: '12345',
    username: 'johndoe',
    email: 'johndoe_new@example.com',
    password: 'newpassword123'
  );

  var result = await accountsService.updateAccount(null, account);
  print('Account updated: ${result.id}');
}

7. 删除账户

你可以使用 deleteAccountById 方法来删除指定账户。

void deleteUserAccount() async {
  await accountsService.deleteAccountById(null, '12345');
  print('Account deleted');
}

8. 关闭服务连接

在应用退出或不再需要账户服务时,记得关闭服务连接。

void closeService() async {
  await accountsService.close();
}

9. 错误处理

在使用这些方法时,务必处理可能的错误和异常。

try {
  var account = await accountsService.getAccountById(null, '12345');
  print('Account info: ${account.username}, ${account.email}');
} catch (e) {
  print('Error: $e');
}
回到顶部