多租户 SaaS 应用程序的最佳方法

best approach for multi tenant SaaS application

我正在尝试构建一个多租户 SaaS 应用程序,我知道有多种方法,但我选择了我认为最适合的多数据库方法。

所以我为每个租户创建一个数据库,并在主数据库中存储 table 个租户 并根据子域将用户连接到各自的数据库。

现在我的问题是在主数据库中存储用户的位置?或租户数据库,将用户存储在主数据库中将难以在其他数据库中获取用户相关模型,但将其存储在租户数据库中将难以对所有用户进行身份验证...

还有最好的场景是什么?

  1. 认证,获取jwt令牌。
  2. 随每个请求发送令牌。
  3. 在每个请求上验证令牌,检查子域,连接到相应的租户数据库,执行请求。

这是一个好方法吗?我应该如何处理用户 table 问题? ThnQ

我可以提供第三种选择。在租户和主数据库中都有用户。然后,您可以创建过程以在用户更改租户数据库时更新主数据库(反之亦然)。

此外,我不知道 Laravel 中的模型,但是 MySQL 没有跨数据库 JOIN 的问题。

将用户保留在租户数据库中是一个不错的选择。当您根据子域区分您的租户时,您可以告诉您的身份验证系统查询子域特定的数据库。

共享认证流程

  1. 用户点击子域登录申请
  2. 用户凭据将发送到应用程序
  3. 在将凭据传递给身份验证之前,根据用户来自的子域确定用于用户身份验证的数据库。
  4. 将数据库名称、用户凭据传递给身份验证系统
  5. 认证系统查询特定数据库并对用户进行认证
  6. 生成会话