情况
我们正在开发一个 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。