2

我有一个完整的应用程序编码。现在,唯一缺少的部分是使其成为多租户。

我想允许客户注册到我的应用程序网站,并获得一个应用程序实例,其中只有该帐户的数据库完全为空。

我曾想过玩环境,但我不确定这是否是一个好方法:

config
    - user1
        - database.php
    - user2
        - database.php
    - ...

我还考虑了一个包含每个帐户的数据库信息的唯一配置文件,并根据子域名设置数据库连接。就像我在这篇文章中看到的那样:

Laravel4 中的多租户

做这部分的任何其他想法或更好的方法?

4

2 回答 2

4

您的解决方案需要为 1000 个用户提供 1000 个文件夹。1000 个数据库,如果在应用程序生命周期中发生任何变化,则进行数千次迁移。你不想要这个,相信我。

相反,简单地说,创建一个数据库并使用标志/外键将数据分配给用户。

于 2013-11-04T13:18:07.583 回答
3

正如 Andreyco 指出的那样,拥有 1000 个用户和 1000 个数据库很快就会成为一个笑话,但如果您的用户帐户(客户)数量会少得多,那么这不是一个问题。

最好的方法是拥有一个包含所有通用客户信息的“主数据库”,这可以通过您也可以访问的“超级管理员”面板进行控制。然后列出其他帐户的数据库配置详细信息,因此将其他数据库的数据库信息存储在该帐户的表中。

它的安全性稍差一些,但本质上意味着有人必须破解主数据库才能进入其他数据库,这不太可能。您还应该限制这些数据库的防火墙,因此即使攻击者在该主数据库中,他们也无法在不入侵您的 Web 服务器并从那里通过 SSH 连接到辅助数据库的情况下进行操作。

于 2013-11-04T16:04:37.373 回答