Appearance
SaaS 租户
MiniAdmin 提供 SaaS 租户基础能力,用于让同一套后台服务多个租户,并控制租户状态、套餐和初始化。
核心概念
| 概念 | 说明 |
|---|---|
| 租户 | 使用系统的客户或组织 |
| 租户编码 | 登录和识别租户的稳定编码 |
| 租户套餐 | 控制租户可用菜单、用户上限、存储容量等 |
| 租户管理员 | 租户初始化后默认创建的管理员账号 |
| 当前租户 | 请求上下文中的租户身份 |
登录识别
租户用户登录后,JWT 中会携带租户信息。后续请求通过当前租户上下文过滤数据。
如果租户被禁用:
- 新登录会被拒绝。
- 已有 token 的后续请求会被拦截。
租户套餐
租户套餐用于控制菜单和资源上限。
常见场景:
- 不同租户可见不同菜单。
- 不同套餐限制最大用户数。
- 不同套餐限制存储容量。
数据隔离
租户数据隔离的原则:
- 业务表如果属于租户,应包含
TenantId。 - 查询时默认按当前租户过滤。
- 平台管理员可以在明确场景下跨租户管理。
- 不要让普通租户用户传入任意
TenantId查询数据。
二开建议
新增业务模块时先判断:
- 这个模块是否属于租户数据。
- 是否需要
TenantId。 - 是否需要租户内唯一约束。
- 是否需要套餐控制入口。
- 是否需要平台管理员跨租户维护。
如果不确定,默认把业务数据设计为租户数据更安全。