私は自分がUserControllerで、次のアクションで私のACLを設定しようとしています:CakePHP:ACLの許可/拒否が機能していない(テーブルが更新されていない)ように設定していますか?
class UsersController extends AppController {
var $name = 'Users';
var $helpers = array('Html', 'Form');
function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('*');
}
function install() {
$group =& $this->User->Group;
//Allow admins to everything
$group->id = 1;
$this->Acl->allow($group, 'controllers');
//allow users
$group->id = 2;
$this->Acl->deny($group, 'controllers');
$this->Acl->allow($group, 'controllers/Messages');
$this->Acl->allow($group, 'controllers/MessageLists');
$this->Acl->allow($group, 'controllers/Products');
$this->Acl->allow($group, 'controllers/Widgetviews');
}
だから私はlocalhost/users/install
に従い、機能にいくつかの数字をエコーした後、私はそれが走っ実現。しかし、ケーキは私に次のエラーを与える:
Error: The requested address '/users/install' was not found on this server.
私は本当にテーブルaros_acos /問題が何であるかを知っているが、私のACOS/AROSないすべてのこの後に変更されません。ここでは次のクエリからのデータです:
mysql> select * from aros_acos a join acos c on a.aco_id=c.id join aros r on a.a
ro_id=r.id
-> ;
+----+--------+--------+---------+-------+---------+---------+----+-----------+-------+-------------+-------------+------+------+----+-----------+-------+-------------+-------+------+------+
| id | aro_id | aco_id | _create | _read | _update | _delete | id | parent_id | model | foreign_key | alias | lft | rght | id | parent_id | model | foreign_key | alias | lft | rght |
+----+--------+--------+---------+-------+---------+---------+----+-----------+-------+-------------+-------------+------+------+----+-----------+-------+-------------+-------+------+------+
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | NULL | NULL | NULL | controllers | 1 | 2 | 1 | NULL | Group | 1 | NULL | 1 | 4 |
| 2 | 2 | 1 | -1 | -1 | -1 | -1 | 1 | NULL | NULL | NULL | controllers | 1 | 2 | 2 | NULL | Group | 2 | NULL | 5 | 10 |
| 3 | 1 | 2 | 1 | 1 | 1 | 1 | 2 | NULL | NULL | NULL | controllers | 3 | 4 | 1 | NULL | Group | 1 | NULL | 1 | 4 |
| 4 | 2 | 2 | -1 | -1 | -1 | -1 | 2 | NULL | NULL | NULL | controllers | 3 | 4 | 2 | NULL | Group | 2 | NULL | 5 | 10 |
+----+--------+--------+---------+-------+---------+---------+----+-----------+-------+-------------+-------------+------+------+----+-----------+-------+-------------+-------+------+------+
4 rows in set (0.00 sec)
EDIT: 私は0に設定し、デバッグを持っていたので、2にそれを切り替えた後、私は次の警告を取得しています:
Warning (512): AclNode::node() - Couldn't find Aro node identified by "Array
(
[Aro0.model] => Group
[Aro0.foreign_key] => 1
)
" [CORE\cake\libs\model\db_acl.php, line 191]
Warning (512): DbAcl::allow() - Invalid node [CORE\cake\libs\controller\components\acl.php, line 324]
Warning (512): AclNode::node() - Couldn't find Aro node identified by "Array
(
[Aro0.model] => Group
[Aro0.foreign_key] => 2
)
" [CORE\cake\libs\model\db_acl.php, line 191]
私も再私のDbAclが作成され、acos
テーブルにはデータが格納されますが、aros
テーブルまたはaros_acos
テーブルには格納されません。上記の警告は、私がinstall
アクションを再度実行しようとしていることです。
私は金曜日にそれをオフにしたんだろう:私は「\私の記事を警告で更新しました。 – Garrett
それは私の悪かった - 私はちょうど私がAROsとして登録するようにDbAclを作り直した後、グループとユーザーを作り直さなければならなかった。ありがとう! – Garrett