如何在CakePHP插件中实现ACL

时间:2013-11-14 11:22:37

标签: cakephp plugins cakephp-2.0 acl

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

它和申请一样吗?或者它是以另一种方式解决的?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

这有意义吗?

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

就我而言,我开发了一个插件,可以作为一个名为“Assets”的简单资产管理器(添加目录,上传/下载文件)。我在设置插件AppController和AppModel时遵循了精确的蛋糕规范,以允许通过url进行访问。正确配置ACL后,我仍然无法访问插件控制器/操作。最后,造成这个问题的原因是我所设计运行的元素中的“requestAction”具有top&侧导航。为了缓解这个问题,所有需要的是添加“plugin”=> null到url数组。

之前:

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

后:

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