1

我想实现一个多用户 CMS 网站,每个用户都可以在自己的记录上执行 CRUD 操作。这意味着应该在记录级别而不是模型级别实现安全性。

我想出了2个解决方案:

  1. 每个模型中都有一个owner_id字段。
  2. 每个用户都有一个用于他们修改的模型的数据库。为所有相关记录(例如用户数据(姓名、电子邮件、用户名、密码)、由管理员编辑的模型,但不是用户等)保留一个主数据库。

解决方案 2,我正在考虑在 Apache 的帮助下实施。例如,我将为user3 设置http://user3_website.mydomain.com/,这将是与 www.mydomain.com 的主网站分开的网站。我将符号链接除/web/uploadsand之外的所有目录/config

  • /config- 我需要 user3 的数据库配置
  • /web/uploads- 我会用于他们的上传。

是否有使用 Symfony 实现这一点的最佳实践/设计模式?我从未开发过可以根据用户动态选择数据库的网站(解决方案 2),所以我想知道这是否有意义。

我有使用 Symfony 1.x 的经验,但还没有在 Symfony2 上进行任何开发。

4

1 回答 1

1

我会选择解决方案 1,为所有具有 owner_id 字段的实例创建一个数据库。这样更容易维护。在某些时候,您可能必须对数据库进行更改,并且必须在多个数据库上进行更改可能会成为一场噩梦,除非您以某种方式将其自动化。

除非您需要考虑一些严重的安全问题,否则在单独的数据库中执行此操作几乎没有任何优势。

于 2012-05-28T11:11:15.277 回答