1

情况

我们正在开发一个 CakePHP 网上商店应用程序,它为我们提供了对不同域仅使用一个数据库的可能性。例如,我们有 shop1.com、shop2.com 和 shop3.com 都在不同的域上,它们都使用相同的数据库。客户看到不同的商店,但我们可以维护它们并从一个后端处理订单。

问题

我们在 CakePHP 中遇到了 ACL 系统的问题。我们希望能够为特定商店设置权限,例如,用户“Roger”无权访问商店 1的“admin_edit”页面,但他确实有权访问商店 2的“admin_edit”页面。

每个商店都用 Config/bootstrap.php 中的唯一商店 ID 标识。

可能的解决方案

我已经尝试将一个名为 store_id 的字段添加到 acos_aros 表中。这将解决问题,因为权限随后取决于执行操作的商店。但是如何以最干净的方式检查该数据库中的 store_id 呢?无需更改 CakePHP 核心..

事实

  • 我们使用的是 CakePHP 2.2.3
  • 我们有一个包含所有产品、用户等的中央数据库。
  • 我们在多台服务器上有不同的域(应用程序),所有商店(目前为 3 个)都使用在 Config/bootstrap.php 中设置的唯一 store_id 进行标识。
  • 我们正在使用 CRUD 授权。
  • 我们不仅要为每个控制器/动作设置权限,还要为每个商店设置权限。否则,商店 1 的所有管理员也可以访问商店 2。
4

1 回答 1

0

我有一个解决你关于这个话题的问题的方法。该解决方案需要域路由器,并且在您为所在的域(domain.id)设置值之后。然后,您可以限制对各种控制器中某些数据的访问。将其与 cakephp 中的 ACL 集成。

于 2013-07-30T15:55:31.357 回答