如果我在网站中添加了一个部分,我正在尝试了解如何使用AROs
和ACOs
。
CakePHP
指南明确了ACL
的概念是如何工作的,而不是如何在代码中实现它。就个人而言,我发现教程的所有部分都不清楚如何在CakePHP
框架内使用它们。它似乎是CakePHP
框架中最不友好的部分。
现在当我进入我创建的新部分时,我收到此错误,我不明白我是如何解决的。
Warning (512): DbAcl::check() - Failed ARO/ACO node lookup in permissions check. Node references:
Aro: Array
(
[User] => Array (
[id] => 1
[username] => vittorio
[group_id] => 1
[created] => 2011-03-30 10:51:23
[modified] => 2011-03-30 10:51:23
[viewable] => 0
)
)
Aco: controllers/Works/index [CORE/cake/libs/controller/components/acl.php, line 273]
如果我看上去
http://book.cakephp.org/view/647/An-Automated-tool-for-creating-ACOs
并且在
http://book.cakephp.org/view/996/Creating-Components#!/view/1548/Creating-ACOs-Access-Control-Objects
我应该得到答案,但如果我再次运行此代码调用网址mysite.com/build_acl
,我只会收到这些错误:
Missing Controller
Error: BuildAclController could not be found.
Error: Create the class BuildAclController below in file: app/controllers/build_acl_controller.php
<?php
class BuildAclController extends AppController {
var $name = 'BuildAcl';
}
?>
Notice: If you want to customize this error message, create app/views/errors/missing_controller.ctp
是否存在一位体面的指南,他会谈论ACL
,AROs
和ACOs
以及如何在CakePHP
上实施这些指导而不会让读者丢失?
答案 0 :(得分:3)
维托里奥,
在充分尊重的情况下,ACL和AUTH相结合是一种非常通用的工具。第一次让它工作让我很烦恼。我一遍又一遍地看到的主要错误是:
build_acl
。ACL
节点作为输出
具有适当的访问权限
权利。parent::beforeFilter()
继承的每个控制器中调用app_controller
(此方法中通常包含关键设置)。重新发明轮子:在基本功能Auth + Acl tutorial之后,查看 sourceforge 和 github 上的插件。
不重新发明轮子^^,afaik尚未编写完美的AUTH + ACL管理插件(但确实存在可用的代码)
好的旅程,本杰明。
<强> Edit0 强>
基本代码卫生有助于,例如如果您允许用户作为受控对象请求对象和操作,则将build_acl()
写入users_controller是有意义的,然后直接将其写入例如init_db()
,您可以在其中集中设置访问权限。
不要忘记在投入生产之前删除这些黑客,即使再次设置正确的访问权限也不会造成太大损害,但想象一下,如果john doe和朋友一直运行此功能,他们会对您的应用做些什么Ü
答案 1 :(得分:0)
mysite.com/build_acl
您必须在控制器的任何操作中运行build_acl,您不能将其称为您指的是没有控制器的操作。至少你可以试试这个
mysite.com/{my_controller}/build_acl
或在app_controller的beforeFilter方法中运行它,例如
function beforeFilter(){
$this->build_acl();
}
当然,函数本身必须在app_controller中声明。