如何在laravel中拥有多租户数据库,其中每个租户都有多个用户


How to have a multi tenant database in laravel where every tenant has multiple users?

所以我试图了解多租户数据库方法是如何工作的,但我在某些地方感到困惑。我试图使用它在Laravel和MySQL

我知道我可以为我的应用程序中的每个租户拥有一个数据库,所以当用户登录时,我可以检查它是哪个租户并更改DB连接以使用他们的数据库。我猜这就是它的工作原理。

但是现在我开始感到困惑了。登录到应用程序的租户将能够创建用户并为他们分配角色,这意味着有超级管理员创建所有租户,但也有一个超级管理员为特定租户创建用户实例本身。

那么在这种情况下,我该如何验证用户呢?例如,我可以对租户进行身份验证,然后将DB连接更改为适当的数据库,但随后我必须登录该特定租户的用户,并且如何在会话中保持两个实体同时登录?

我猜一个多认证包(如多认证)可能有助于做到这一点,但由于我是新手,我大多是模糊的。

我希望有人已经遇到了这个问题,也许能帮助我。

首先,我假设您有充分的理由使用多个数据库,而不是让所有用户都生活在相同的表中。通常情况下,这可能是因为您有一个数据量特别大的应用程序、安全情况,或者您只是希望能够轻松地在应用程序(如CRM)中分离出客户端数据。

第二,如果我要使用多个数据库,我仍然会依赖Laravel来控制对数据库的访问。Laravel将在所有查询中使用管理级别的凭据,但在你的应用程序中,你将使用Laravel的认证层来控制对特定路由和操作的访问。