RBAC 权限
6 种登录策略,细粒度权限注册表,B 端角色管理。
6 种登录策略
| 策略 | 说明 | 适用场景 |
|---|---|---|
independent | 独立登录,每个应用独立 | 单应用 |
group_sso | 分组 SSO,同组应用共享 | 产品线内 |
global_sso | 全局 SSO,所有应用共享 | 集团级 |
single_device | 单设备登录 | 安全要求高 |
multi_device | 多设备登录 | 消费级应用 |
ip_bound | IP 绑定 | 内部系统 |
配置策略
在控制台应用详情页配置 login_policy:
{
"login_policy": "group_sso",
"policy_config": {
"group_key": "yunjii_products",
"max_devices": 3,
"ip_whitelist": []
}
}
多实例 Token
UM 支持多实例 Token,每个设备/应用有独立 Token:
CREATE TABLE um_user_token (
user_id BIGINT,
token VARCHAR(255),
scope VARCHAR(50), -- 应用分组/全局
scope_type ENUM('app', 'group', 'global'),
device_id VARCHAR(64),
login_ip VARCHAR(45),
ip_bound BOOLEAN,
expire_at DATETIME
);
权限注册表
B 端 RBAC 通过权限注册表管理:
CREATE TABLE um_perm_registry (
perm_key VARCHAR(100) PRIMARY KEY,
perm_name VARCHAR(100),
module VARCHAR(50),
description TEXT
);
CREATE TABLE um_b_roles (
id BIGINT PRIMARY KEY,
role_key VARCHAR(50),
role_name VARCHAR(100),
perms TEXT -- JSON 权限列表
);
Token 验证
GET /check_token.php
Authorization: Bearer your_token_here
响应:
{
"code": 1,
"data": {
"user_id": 123,
"openid": "um_abc123",
"scope": "yunjii_products",
"expire_at": "2026-07-12 10:00:00"
}
}
Token 验证返回 scope 字段,标识该 Token 的作用域(单应用/分组/全局),便于做细粒度授权。