构建多租户 SaaS 应用程序:从设计到实现的完整指南
学习如何仅在几个小时内高效地构建具有强大身份认证、组织管理和基于角色的访问控制的多租户 SaaS 应用程序。
像 Notion、Slack 或 Figma 这样的应用是如何构建的?这些多租户 SaaS 应用看起来使用简单,但是自己构建一个?那是另外一个故事。
当我第一次想到构建这样一个复杂的系统时,我的脑袋爆炸了:
- 用户需要多种登录选项(电子邮件、谷歌、GitHub)
- 每个用户可以创建和属于多个组织
- 每个组织中不同的权限级别
- 企业组织需要对特定电子邮件域的自动加入功能
- 对敏感操作的 MFA 要求
- ...
"老板,让我们两周后讨论产品设计。我现在遇到困难了。"
但是当我真正开始工作的时候,我发现事情并不像看起来那么令人望而生畏。
我用不到两个小时的时间构建了一个拥有所有这些功能的系统!
我将向你展示如何从头到脚设计和实现这样一个系统——你会惊讶于在 2025 年有现代工具和正确的架构方法,它实际上是多么简单。
本文末尾提供完整的源代码。让我们开始吧!
我们将从一个名为 DocuMind 的 AI 文档 SaaS 产品开始。
DocuMind 是一个 AI 文档 SaaS 产品,设计采用多租户模型 ,支持个人用户、小企业和企业用户。
该平台为组织内的文档管理提供强大的 AI 能力,包括自动摘要生成、关键点提取和智能内容推荐。
SaaS 身份验证和授权需要哪些功能?
首先,让我们回顾一下必要要求。你需要哪些功能?
多租户架构
为了实现多租户架构,你需要一个称为 组织 的实体层。这种设计模拟一个用户池中的用户可以访问多个工作空间。每个组织代表一个工作空间,而用户保持单一身份,与各工作空间组织的角色链接。
这是身份验证提供者中广泛使用的功能。身份管理系统中的组织对应于你的 SaaS 应用的工作空间、项目或租户。
成员资格
成员是一个临时的概念,用于指示身份在组织中的成员资格状态。
例如,Sarah 使用她的电子邮件 [email protected] 注册你的应用程序。她可以属于不同的工作空间。如果 Sarah 是 工作空间 A 的成员但不是 工作空间 B,那么她被认为是 工作空间 A 的成员而不是 工作空间 B。
角色和权限设计
在多租户架构中,用户需要具有特定 权限 的 角色 以访问其租户资源。
权限是定义特定操作的详细访问控制,例如 read: order
或 write: order
。它们决定了对特定资源可以执行的操作。
角色是在多租户环境中分配给成员的一组权限。
你需要定义这些角色和权限,然后将角色分配给用户,有时它可能包括自动化过程。例如:
- 加入组织的用户自动获得 成员 角色。
- 第一个创建工作空间的用户被自动分配为 管理员 角色。
注册和登录流程
确保用户友好并安全的注册和身份验证过程,包括基本的登录和注册选项:
- 电子邮件和密码登录:传统的登录方法使用电子邮件和密码。 2. 无密码登录:使用电子邮件验证码进行简单安全的访问。 3. 帐户管理:用户可以在帐户中心更新他们的电子邮件、密码和其他详细信息。 4.