2012-01-09 13 views
0

私は自分が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アクションを再度実行しようとしていることです。

答えて

1

権限を割り当てる前に、コントローラ/メッセージなどのACOを作成する必要があると思います。

より良いエラーメッセージを得るには、デバッグレベルをapp/config/core.phpの2に設定してください。 "production"設定は、Cakeがすべてのエラーに対して同じメッセージを与えるようにします。

+0

私は金曜日にそれをオフにしたんだろう:私は「\私の記事を警告で更新しました。 – Garrett

+0

それは私の悪かった - 私はちょうど私がAROsとして登録するようにDbAclを作り直した後、グループとユーザーを作り直さなければならなかった。ありがとう! – Garrett

0

次のコマンドを試してみました:

../cake/console/cake ACL AROルートGroup.1

を作成

../cake/console/cake ACL AROルートグループを作成します../cake/console/cake ACLアロルートGroup.2を作成

../cake/console/cake ACL AROルートGroup.3を作成

関連する問題