【问题标题】:Laravel multi-tenant approach. Where to startLaravel 多租户方法。从哪儿开始
【发布时间】:2013-11-05 00:04:37
【问题描述】:

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

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

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

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

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

Multi-tenant in Laravel4

还有其他想法或更好的方法来完成这部分吗?

【问题讨论】:

    标签: laravel laravel-4 multi-tenant


    【解决方案1】:

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

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

    【讨论】:

    • 这对于数据库维护来说有点麻烦,不是吗?有什么推荐的读物吗?
    • 没错,那样维护会很困难。我会使用m:n 关系。 M:N 关联结果到关联表/实体,它可以帮助您将数据分配给另一个实体(博客文章给作者,照片给用户,...)这里是理论 en.wikipedia.org/wiki/Associative_Entities 和 Laravel 实现这里 laravel.com/docs/eloquent#many-to-many
    【解决方案2】:

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

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

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

    【讨论】:

    • 除了安全隐患之外,使用这种架构还有其他弊端吗?
    • Phil,自从您发表评论以来已经有一段时间了,您是否已经做了更多的多租户来保持这种方法?以及任何要实现它的帖子/包/模式?
    • 从那以后我再也没有这样做过,但如果我再这样做一次,我会采取这种方法。你不需要任何花哨的包或帖子或模式来做到这一点。 :)
    猜你喜欢
    • 2016-01-02
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 2010-10-10
    • 2012-04-12
    • 1970-01-01
    相关资源
    最近更新 更多