Skip to content
bitzorcas
中EN

Concept

多租户架构深度剖析:8 步解析链、数据隔离与代客模拟沙箱

深入解析 BitzOrcas.Modern 企业级多租户底层机制:8 步租户解析优先级链、双 ORM 自动化全局数据过滤(Global Query Filters)、跨租户防越权与操作员代客模拟安全沙箱。

Last updated

在 SaaS 与多律所/多企业应用中,租户数据隔离是绝对的安全红线。 BitzOrcas.Modern 采用环境上下文传播(Ambient Context) + 双 ORM 编译期全局查询过滤,确保开发者无需在业务代码中手工拼接 WHERE TenantId = @tenantId,由框架在 SQL 生成阶段自动注入。

8 步租户解析优先级链

命中未命中命中未命中命中未命中命中未命中是否

HTTP 请求入站

1. Host/子域名解析 (lawfirm-alpha.bitz.com)

注入 ICurrentTenant 作用域

2. 自定义请求头 (X-Tenant-Id / X-Tenant-Code)

3. JWT Claims 提取 (tenant_id / tid)

4. API Query 参数 (?tenantCode=xxx)

5. 匿名公开白名单端点?

标记为公共端点 (Public Access)

阻断请求:400 Bad Request (Tenant.Unresolved)


双 ORM 编译期全局租户隔离

对所有继承 TenantAggregateRoot 且标记 [BitzTable] 的聚合根,双 ORM 适配器会自动挂载全局租户过滤器:

双 ORM 全局租户过滤行为
// 开发者编写的高层 LINQ / 仓储查询:
var matters = await noteReadStore.SearchAsync(fields, paging, sort, cancellationToken);
// EF Core 与 SqlSugar 在底层实际生成的 SQL 语句 (自动追加租户隔离约束):
// SELECT * FROM LegalMatterIntake
// WHERE Status = 2 AND TenantId = 'lawfirm-alpha';

[!IMPORTANT] 开发零心智负担:开发者在编写查询或新增数据时,无需手工给实体赋值 TenantId 或添加 SQL WHERE 条件,框架管道在实体落库与查询时全自动安全注入,从物理层面根绝跨租户越权(IDOR)漏洞。


总结

BitzOrcas.Modern 的多租户体系确保了:

  • 8 步解析严密可靠:多端多场景平滑适配;
  • 底层自动隔离:SQL 级别自动注入租户过滤,防止代码漏洞;
  • 代客模拟沙箱受控:技术支持人员操作可追溯且写权限严格受限。

100%

滚轮或按钮缩放 · 放大后拖动画面 · 双击切换 100% / 200%