oli*_*ive 2 php authentication acl cakephp
我可以发誓我已经正确地完成了教程,但是我收到了一条错误消息,而我的aros_acos表是空的.
我已经做了什么:
在这个页面上:http://book.cakephp.org/view/646/Creating-ACOs 我运行"cake acl create aco root controllers"并返回"New Aco'controller'创建." 我还添加了"$ this-> Auth-> actionPath ='controllers /';" 到AppsController的beforeFilter().我不明白另一段代码,因为它应该去哪里得到了很好的解释 - "使用AclComponent"究竟是什么意思?
我从这个网页运行build_acl():http://book.cakephp.org/view/647/An-Automated-tool-for-creating-ACOs 它填充我的"ACOS"表46项.
这是我认为问题的页面所在:http://book.cakephp.org/view/648/Setting-up-permissions我复制的页面到我apps_controller.php上找到的代码,并修改了它稍微指向我正在使用的组的ID:
function initDB(){$ group =&$ this-> User-> Group;
//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');
Run Code Online (Sandbox Code Playgroud)
}
我还从我的用户和组控制器中获取了对allowedActions的所有引用,并将正确的代码添加到我的帖子,小部件和AppController页面......
通过访问http:// localhost/basic_cake2/groups/initDB在AppController中运行initDB()时,我的屏幕顶部会显示一条警告消息.它说:
DbAcl :: allow() - 无效节点[CORE/cake/libs/controller/components/acl.php,第325行]
背景:
$ ARO = stdClass的stdClass的:: $ ID = $ 5 ACO = "控制器" $动作= "*" $值= 1个$烫发=假$ permKeys =阵列( "_create", "_read", "_Update","_delete ")$ save = array()
码:
Run Code Online (Sandbox Code Playgroud)if ($perms == false) { trigger_error(__('DbAcl::allow() -无效节点',true),E_USER_WARNING);
并且还显示:
DbAcl :: allow() - CORE/cake/libs/controller/components/acl.php,第325行AclComponent :: allow() - CORE/cake/libs/controller/components/acl.php,第101行AppController :: initDB () - APP/app_controller.php,第23行Object :: dispatchMethod() - CORE/cake/libs/object.php,第116行Dispatcher :: _ invoke() - CORE/cake/dispatcher.php,第227行Dispatcher :: dispatch() - CORE/cake/dispatcher.php,第194行[main] - APP/webroot/index.php,第88行
在检查aros_acos表时,我发现没有添加任何内容!
因此,身份验证不适用于任何页面... :(有没有人有任何想法?我不知道如何调试这个,我问#cakeph,但他们是非常沉默的回应,基本上只是告诉我重新 - 阅读文档.
编辑: 好的,所以我更加努力地阅读了教程,结果发现我一直在从错误的文件中运行该函数.我将它移动到用户控制器,它向aros_acos表添加了3行.
但是,我仍然收到错误消息,所以我觉得还有问题!
错误消息的上下文似乎确实发生了变化,这很有趣.它现在写道:
$ aro =集团
Group :: $ name ="Group"
Group :: $ validate = array
Group :: $ hasMany = array
Group :: $ actsAs = array
Group :: $ useDbConfig ="default"
Group :: $ useTable ="groups"
Group :: $ displayField ="name"
Group :: $ id = 6
Group :: $ data = array
Group :: $ table ="groups"
Group :: $ primaryKey ="id"
Group :: $ _ schema = array
Group :: $ validationErrors = array
Group :: $ tablePrefix =""
Group :: $ alias ="Group"
Group :: $ tableToModel = array
Group :: $ logTransactions = false
Group :: $ transactional = false
Group :: $ cacheQueries = false
Group :: $ belongsTo = array
Group :: $ hasOne = array
Group :: $ hasAndBelongsToMany = array
Group :: $ Behaviors = BehaviorCollection对象
Group :: $ whitelist = array
Group :: $ cacheSources = true
Group :: $ findQueryType = NULL
Group :: $ recursive = 1
Group :: $ order = NULL
Group :: $ __ exists = NULL
Group :: $ __ associationKeys = array
Group :: $ __ associations = array
Group :: $ __ backAssociation = array
Group :: $ __ insertID = NULL
Group :: $ __ numRows = NULL
Group :: $ __ affectedRows = NULL
Group :: $ _ findMethods = array
Group :: $ _ log = NULL
Group :: $ User =用户对象
Group :: $ Aro = Aro对象
$ aco ="控制器/帖子"
$ actions ="*"
$ value = 1
$ perms = false
$ permKeys = array(
"_创建",
"_读",
"_Update"
"_删除"
)
$ save = array()
我修好了它.备查:
固定!
| 归档时间: |
|
| 查看次数: |
3010 次 |
| 最近记录: |