账号¶
MOI SDK 的账号接口面向 MOI Catalog Service 当前用户。它可以读取和更新当前用户资料、 修改密码,以及读取或刷新当前用户的 API Key。这里的用户不等同于统一账户中心中的注册 账号,也不等同于 MatrixOne 数据库用户。
可用方法¶
操作 |
Python |
Go |
|---|---|---|
读取当前用户与有效权限 |
|
|
更新电话、邮箱和描述 |
|
|
修改当前用户密码 |
|
|
读取当前用户 API Key |
|
|
刷新当前用户 API Key |
|
|
get_my_info / GetMyInfo 返回用户资料、全局权限码列表和对象级权限列表。Python
RawClient 返回解码后的字典;Go 使用 UserMeInfoResponse,其中包含 UserInfo、
AuthorityCodeList 和 ObjAuthorityCodeList。
读取当前用户¶
import os
from moi import RawClient
client = RawClient(
base_url=os.environ["MOI_BASE_URL"],
api_key=os.environ["MOI_API_KEY"],
)
me = client.get_my_info()
user = me["user_info"]
print(user["id"], user["name"], user["status"])
print("global privileges:", me["authority_code_list"])
package main
import (
"context"
"fmt"
"log"
"os"
sdk "github.com/matrixorigin/moi-go-sdk"
)
func main() {
client, err := sdk.NewRawClient(
os.Getenv("MOI_BASE_URL"),
os.Getenv("MOI_API_KEY"),
)
if err != nil {
log.Fatal(err)
}
me, err := client.GetMyInfo(context.Background())
if err != nil {
log.Fatal(err)
}
fmt.Println(me.UserInfo.ID, me.UserInfo.Name, me.UserInfo.Status)
fmt.Println("global privileges:", me.AuthorityCodeList)
}
在访问 UserInfo 前,生产代码还应检查它是否为空。应用需要授权判断时,应使用服务端
返回的权限码,而不是根据用户名或页面入口推测权限。
更新资料¶
自助资料接口只公开电话、邮箱和描述字段:
client.update_my_info(
{
"phone": "13800000000",
"email": "developer@example.com",
"description": "Data platform integration",
}
)
空请求不是有效调用:Python 会对 None 抛出 ErrNilRequest;Go 方法要求非空请求指针。
字段格式和可否留空仍由服务端校验,调用后可再次执行 get_my_info() 确认结果。
API Key 安全¶
RawClient 构造时要求 Base URL 和 API Key,并自动将 Key 放入 moi-key 请求头。不要
自行把 Genesis 的 Authorization: Bearer 规则套用到该客户端。
刷新 API Key 属于密钥轮换操作。官方 SDK 暴露了刷新方法,但返回类型不包含新 Key;
不同部署的旧 Key 失效时点和新 Key 交付流程应以目标环境为准。生产环境执行前应准备
回滚和安全交付方案,不要在日志中打印 get_my_api_key() 的完整响应。
管理员管理其他 Catalog Service 用户见成员,权限数据结构见 权限审计。SDK 源码与最新签名见 Python SDK 和 Go SDK。