Guides
多租户指南
创建租户、管理成员、切换组织和隔离数据的分步指南。
创建组织
新用户注册后会被提示创建组织。也可以通过代码创建:
const org = await nebutra.orgs.create({
name: "Acme 公司",
slug: "acme",
ownerId: userId,
});邀请成员
await nebutra.members.invite({
orgId: "org_123",
email: "[email protected]",
role: "MEMBER", // OWNER | ADMIN | MEMBER | VIEWER
});Alice 将收到包含邀请链接的事务性邮件。接受邀请会创建其成员关系并触发 member.joined Webhook 事件。
更改成员角色
await nebutra.members.updateRole({
orgId: "org_123",
userId: "user_456",
role: "ADMIN",
});无法更改 OWNER 的角色,除非先转让所有权。必须始终至少有一个 OWNER。
移除成员
await nebutra.members.remove({
orgId: "org_123",
userId: "user_456",
});数据隔离实践
使用 withRls 时,所有数据查询自动限定到当前租户:
import { withRls, getCurrentTenant } from "@nebutra/tenant";
import { prisma } from "@/lib/db";
export async function getProjects() {
const tenant = getCurrentTenant();
const db = withRls(prisma, tenant.tenantId);
// 此查询仅返回当前租户的项目
// WHERE tenant_id = '...' 子句由 PostgreSQL RLS 注入
return db.project.findMany({
orderBy: { createdAt: "desc" },
});
}租户级 API 密钥
API 密钥属于租户,而非用户。在设置 → API 密钥中创建:
const key = await nebutra.apiKeys.create({
orgId: "org_123",
name: "生产 CI",
scopes: ["project:read", "project:create"],
expiresAt: new Date("2027-01-01"),
});
// key.secret 只显示一次——请安全存储相关文档
How is this guide?
在 GitHub 上编辑此页面
最后更新于