【问题标题】:How to implement ACL in CakePHP plugin如何在 CakePHP 插件中实现 ACL
【发布时间】:2013-11-14 11:22:37
【问题描述】:

我正在开发一个 CakePHP 2 的插件,但我不知道如何为它定义 ACL。

这和应用程序一样吗?还是用其他方法解决?

谢谢!

【问题讨论】:

    标签: cakephp plugins cakephp-2.0 acl


    【解决方案1】:

    我今天在尝试自己解决同样的问题时遇到了您的问题。假设您已遵循 CakePHP 教程“简单的 ACL 控制应用程序”,我的回答将是最有意义的。

    要直接回答您的问题,答案是肯定的。定义 ACO(访问控制对象)与任何应用程序控制器相同。稍作修改。您首先创建一个 ACO 记录来表示插件本身,它使用根 ACO 作为它的 parent_id。插件控制器随后将使用插件 ACO 作为其 parent_id(并且插件控制器操作将使用插件控制器 ACO 作为其 parent_id)。

    这有意义吗?

    对于因为成功建立 ACL/Auth 控制的应用程序、构建了自定义插件(打算通过 url 访问它)、正确配置 ACL 并且仍然无法访问他们的插件而到达这里的任何人。我想提供以下建议,这花费了我几天的不懈努力。

    在我的例子中,我开发了一个插件来充当简单的资产管理器(添加目录、上传/下载文件),称为“资产”。我在设置插件 AppController 和 AppModel 以允许通过 url 访问时遵循了确切的蛋糕规范。正确配置 ACL 后,我仍然无法访问插件控制器/操作。最后,导致问题的原因是“requestAction”驻留在我设计的具有顶部和侧面导航功能的元素中。为了缓解这个问题,只需在 url 数组中添加“plugin” => null。

    之前:

    $this->requestAction(array('controller' => 'users', 'action' => 'get_side_navigation'));

    之后:

    $this->requestAction(array('plugin' => null,'controller' => 'users', 'action' => 'get_side_navigation'));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-12
      相关资源
      最近更新 更多