Flutter账户服务管理插件pip_services_accounts的使用
Flutter账户服务管理插件pip_services_accounts的使用
用户账户微服务
这是来自Pip.Services库的用户账户管理微服务。
- 注册用户并创建其账户
- 保存用户的描述和设置(关于、位置、语言、主题等)
该微服务目前支持以下部署选项:
- 部署平台:独立进程、Seneca
- 外部API:HTTP/REST、Seneca
- 持久化:内存、平面文件、MongoDB
该微服务可选依赖于以下微服务:
- pip-services-activities-dart - 用于记录用户活动(注册、登录、更改设置)
合同
以下是微服务的逻辑合同。对于物理实现(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: https://github.com/pip-services3-dart/pip-services3-commons-dart
- Pip.Services3.Rpc: https://github.com/pip-services3-dart/pip-services3-rpc-dart
添加pip-services3-commons-dart
、pip-services3-rpc-dart
和 pip-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
更多关于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');
}