【发布时间】:2014-03-04 08:05:07
【问题描述】:
我在使用 ACL 时遇到问题。在我的 CoreUsersController 中,我进行了以下调用:
if(!$this->Acl->check('User::'.$user['User']['id'], 'CoreUser', 'read')) {
die('PERM DENIED');
}
ACL 作为组件包含在我的 AppController 中。数据库表看起来像:
- 表“acos”
- 表“core_groups”(as aros)
- 表“aros_acos”作为 core_groups 和 acos 之间的连接。
这是抛出的错误: 错误:模型 Aro 的表 aros 未在数据源默认值中找到。
还有我的代码:
1.用户模型:
App::uses('AuthComponent', 'Controller/Component');
class CoreUser extends AppModel {
public $useDbConfig = 'default';
public $useTable = 'core_users';
public $hasAndBelongsToMany = array(
'MemberOf' => array(
'className' => 'CoreGroup',
'joinTable' => 'core_users_groups',
'foreignKey' => 'user_id',
'associationForeignKey' => 'group_id'
)
);
public $name = 'User';
public $actsAs = array('Acl' => array('type' => 'both'));
public function parentNode() {
// stuff in here should be correct
}
}
2。组模型:
App::uses('AppModel', 'Model');
App::uses('AuthComponent', 'Controller/Component');
class CoreGroup extends AppModel {
public $useDbConfig = 'default';
public $useTable = 'core_groups';
public $hasAndBelongsToMany = array(
'Member' => array(
'className' => 'CoreUser',
'joinTable' => 'core_users_groups',
'foreignKey' => 'group_id',
'associationForeignKey' => 'user_id'
)
);
public $name = 'Group';
public $actsAs = array('Acl' => array('type' => 'requester'));
public function parentNode() {
return null;
}
}
我的问题:如何告诉 ACL 使用“core_groups”-Table 而不是“aros”-table?注意:我按照 Cake-Book 的建议为两个模型添加了“ActsAs”!
【问题讨论】:
-
您是在 shell 中使用此命令:./Console/cake schema create DbAcl 来创建 acl 表还是您手动执行的?