SuperAPI AI 工具集

saas-multi-tenant

设计与创作

查看项目

更新于 10-15 20:34

技能介绍

用途:指导构建多租户 SaaS 架构,解决租户隔离、行级安全与数据泄漏防护问题。适用于多客户共享同一数据库、需要为每个查询自动限定租户、为现有单租户应用补充 tenant_id、实现跨租户管理端点,以及在 Express、Fastify、Next.js API 路由中构建租户感知中间件。单用户应用、仅做认证或一般数据库设计不适用。

主要能力:确定租户模型(共享 schema、schema-per-tenant、database-per-tenant 的取舍);为每张租户表添加 NOT NULL 的 tenant_id 并纳入复合索引;用 PostgreSQL RLS 策略按 current_setting('app.current_tenant_id') 过滤行;构建请求级中间件,在事务内用 set_config 设置租户上下文;为 Prisma 等 ORM 注入全局租户过滤;编写租户感知迁移与 CI 检查;单独构建跨租户管理路由;实现租户开通事务。

必要用法:RLS 需 ALTER TABLE ... ENABLE ROW LEVEL SECURITY 并创建 USING / WITH CHECK 策略;中间件中用 SELECT set_config('app.current_tenant_id', $1, true) 设置会话变量,并在响应结束时提交或回滚、释放连接。

限制与注意:原始 SQL 会绕过 ORM 中间件,必须显式过滤或依赖 RLS;租户主键应使用 UUID 避免枚举;管理端点须使用独立认证;迁移连接不应启用 RLS;使用 SET LOCAL 时需在清理路径重置租户上下文,避免连接池残留;schema-per-tenant 可能耗尽连接数。租户删除、GDPR 导出、共享资源、后台任务等边界情况需专门处理。具体实现细节与更多示例以原始资料为准。