我正在开发一个 CakePHP 2 的插件,但我不知道如何为它定义 ACL。
它和应用程序一样吗?还是用另一种方式解决?
谢谢!
我今天在尝试自己解决同样的问题时遇到了你的问题。假设您已遵循 CakePHP 教程“简单的 ACL 控制应用程序”,我的回答将是最有意义的。
直接回答你的问题,答案是肯定的。定义 ACO(访问控制对象)与任何应用程序控制器相同。稍作修改。您首先创建一个 ACO 记录来表示插件本身,它使用根 ACO 作为它的 parent_id。插件控制器随后将使用插件 ACO 作为它们的 parent_id(并且插件控制器操作将使用插件控制器 ACO 作为它们的 parent_id)。
这有意义吗?
对于因为成功建立了 ACL/Auth 控制的应用程序、构建了自定义插件(打算通过 url 访问它)、正确配置 ACL 并且仍然无法访问他们的插件而到达这里的任何人。我想提供以下建议,这花费了我几天的不懈努力。
就我而言,我开发了一个插件来充当简单的资产管理器(添加目录、上传/下载文件),称为“资产”。我在设置插件 AppController 和 AppModel 以允许通过 url 访问时遵循了确切的蛋糕规范。正确配置 ACL 后,我仍然无法访问插件控制器/操作。最后,导致问题的原因是“requestAction”驻留在我设计的具有顶部和侧面导航功能的元素中。为了缓解这个问题,只需将“plugin”=> null 添加到 url 数组。
$this->requestAction(array('controller' => 'users', 'action' => 'get_side_navigation'));
$this->requestAction(array('plugin' => null,'controller' => 'users', 'action' => 'get_side_navigation'));