【问题标题】:Doing the CakePHP Acl tutorial. I can't seem to populate aros_acos做 CakePHP Acl 教程。我似乎无法填充 aros_acos
【发布时间】:2011-01-08 20:57:38
【问题描述】:

我可以发誓我已经正确完成了教程,但是我收到一条错误消息并且我的 aros_acos 表是空的。

我已经做了什么:

  1. 在此页面上:http://book.cakephp.org/view/646/Creating-ACOs 我运行了“cake acl create aco root controllers”,它返回“New Aco 'controllers' created。”。我还添加了“$this->Auth->actionPath = 'controllers/';”到 AppsController 的 beforeFilter() 。我不明白另一段代码,因为它被错误地解释了应该去哪里——“使用 AclComponent”到底是什么意思?

  2. 我已经从这个页面运行了 build_acl():http://book.cakephp.org/view/647/An-Automated-tool-for-creating-ACOs 它用 46 个条目填充了我的“acos”表。

  3. 这是我认为问题所在的页面:http://book.cakephp.org/view/648/Setting-up-permissions 我将页面上的代码复制到了我的 apps_controller.php 中,并稍微修改了它以指向我正在使用的组的 ID:

    函数初始化数据库(){ $group =& $this->用户->组;

    //Allow admins to everything
    $group->id = 5;
    $this->Acl->allow($group, 'controllers');
    
    //allow managers to posts and widgets
    $group->id = 6;
    $this->Acl->deny($group, 'controllers');
    $this->Acl->allow($group, 'controllers/Posts');
    $this->Acl->allow($group, 'controllers/Widgets');
    
    //allow users to only add and edit on posts and widgets
    $group->id = 7;
    $this->Acl->deny($group, 'controllers');
    $this->Acl->allow($group, 'controllers/Posts/add');
    $this->Acl->allow($group, 'controllers/Posts/edit');
    $this->Acl->allow($group, 'controllers/Widgets/add');
    $this->Acl->allow($group, 'controllers/Widgets/edit');
    

    }

我还从我的用户和组控制器中获取了所有对 allowedActions 的引用,并将正确的代码添加到我的帖子、小部件和 AppController 页面...

通过访问http://localhost/basic_cake2/groups/initDB 在 AppController 中运行 initDB() 时,我在屏幕顶部收到一条警告消息。它说:

DbAcl::allow() - 无效节点 [核心/蛋糕/库/控制器/组件/acl.php, 第325行]

上下文:

$aro = stdClass stdClass::$id = 5 $aco = "控制器" $actions = "*" $value = 1 $perms = 假 $permKeys = array("_create", “_read”、“_update”、“_delete”) $save = 数组()

代码:

    if ($perms == false) {
        trigger_error(__('DbAcl::allow() -

无效节点', true), E_USER_WARNING);

还显示:

DbAcl::allow() - 核心/蛋糕/库/控制器/组件/acl.php, 第 325 行 AclComponent::allow() - 核心/蛋糕/库/控制器/组件/acl.php, 第 101 行 AppController::initDB() - APP/app_controller.php,第 23 行 对象::dispatchMethod() - CORE/cake/libs/object.php,第 116 行 调度程序::_invoke() - CORE/cake/dispatcher.php,第 227 行 调度员::dispatch() - CORE/cake/dispatcher.php,第 194 行 [主要] - APP/webroot/index.php,行 88

在检查 aros_acos 表时,我发现没有添加任何内容!

因此,身份验证不适用于任何页面... :( 有人有什么想法吗?我不知道如何调试它,我在 #cakephp 上询问过,但他们对此保持沉默,基本上只是告诉我重新阅读文档。

编辑: 好的,所以我稍微更难地阅读了教程,结果发现我一直在从错误的文件中运行该函数。我将它移到了用户控制器,它在 aros_acos 表中添加了 3 行。

但是,我仍然收到该错误消息,所以我认为还是有问题!

错误消息的上下文似乎确实发生了变化,这很有趣。现在是这样的:

$aro = 组

组::$name = "组"

组::$validate = 数组

组::$hasMany = 数组

组::$actsAs = 数组

组::$useDbConfig = "默认"

组::$useTable = "组"

组::$displayField = "名称"

组::$id = 6

组::$data = 数组

组::$table = "组"

组::$primaryKey = "id"

组::$_schema = 数组

组::$validationErrors = 数组

组::$tablePrefix = ""

组::$alias = "组"

Group::$tableToModel = 数组

组::$logTransactions = false

Group::$transactional = false

组::$cacheQueries = false

组::$belongsTo = 数组

组::$hasOne = 数组

组::$hasAndBelongsToMany = 数组

Group::$Behaviors = BehaviorCollection 对象

组::$whitelist = 数组

组::$cacheSources = true

组::$findQueryType = NULL

组::$recursive = 1

组::$order = NULL

组::$__exists = NULL

组::$__associationKeys = 数组

组::$__associations = 数组

组::$__backAssociation = 数组

组::$__insertID = NULL

组::$__numRows = NULL

组::$__affectedRows = NULL

组::$_findMethods = 数组

组::$_log = NULL

Group::$User = 用户对象

Group::$Aro = Aro 对象

$aco = "控制器/帖子"

$actions = "*"

$值 = 1

$perms = 假

$permKeys = 数组(

“_create”,

“_read”,

“_update”,

“_删除”

)

$save = 数组()

【问题讨论】:

    标签: php authentication cakephp acl


    【解决方案1】:

    我修好了。供将来参考:

    1. 我删除了所有表格的内容以便从头开始。
    2. 我从错误的文件中运行了 initDB()。我正确地将其移至用户控制器。运行它不再给出错误消息,并将正确的条目添加到 aros_acos。

    已修复!

    【讨论】:

    • 刚刚遇到了同样的问题。澄清一下,您的 initDB() 函数能够访问 Group 对象的实例真的很重要。我自己将它放入管理控制器中,并确保控制器具有 var $uses = array('Users');这与将功能放在用户控制器中一样有效。如果我需要进行任何更改,这也使再次访问变得容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    相关资源
    最近更新 更多