SuperAPI AI 工具集

saas-multi-tenant

通用与其它

查看项目

更新于 10-16 01:08

技能介绍

用途:用于设计与实现多租户 SaaS 架构,解决租户隔离、行级安全与数据泄漏防护问题。适用于多个客户共享同一数据库的 SaaS 应用、需要租户作用域查询、跨租户管理端点,或为现有单租户应用添加 tenant_id 的场景。不适用于单用户应用,或仅涉及认证而无租户作用域的需求。

主要能力:确定租户模型(共享 schema、每租户 schema、每租户数据库的权衡);为每个租户表添加 tenant_id 列并纳入复合索引;配置 PostgreSQL 行级安全(RLS)策略,基于 current_setting('app.current_tenant_id') 过滤行;构建租户感知中间件(Express、Fastify、Next.js API 路由),在事务中使用 SET LOCAL 或 set_config 设置租户上下文;通过 ORM 中间件(如 Prisma)自动注入租户过滤;处理租户感知迁移与 CI 检查;单独构建跨租户管理路由;实现租户开通事务。

使用方式:在请求开始时从会话或 JWT 提取 tenant_id,在事务中设置数据库会话变量;ORM 查询统一注入租户过滤,原始 SQL 需包含 WHERE tenant_id 或依赖 RLS;管理端点需使用专用角色绕过 RLS,并采用独立管理认证。

限制与注意:避免无租户过滤的查询;不要仅在应用层过滤而不在数据库层强制执行;租户资源主键应使用 UUID 而非自增整数;迁移连接不应启用 RLS;使用 SET LOCAL 时注意连接池中的陈旧租户上下文并清理;schema-per-tenant 可能耗尽连接池;需处理租户删除、GDPR 数据导出、租户间共享资源及后台任务的租户上下文。环境特定验证与测试仍需自行完成。