2013-11-22 79 views
0

我做了cakephp acl controlled application tutorialCakePHP的ACL 2.4.2的教程問題

我的問題是在這一步:現在

我們的控制器和模型準備向加入一些初始數據,以及我們的組和用戶模型被綁定到Acl表。因此,通過瀏覽至http://example.com/groups/addhttp://example.com/users/add,添加一些使用烘焙表格的羣組和用戶。我提出了以下羣組:

當我嘗試打開*/groups/add或*/users/add時,出現錯誤「您無權訪問該位置。」

我該如何解決問題?

這裏是我的GroupModel和UserModel。

組:

<?php 
App::uses('AppModel', 'Model'); 
/** 
* Group Model 
* 
*/ 
class Group extends AppModel { 

/** 
* Display field 
* 
* @var string 
*/ 
    public $displayField = 'name'; 

    public $actsAs = array('Acl' => array('type' => 'requester')); 

    public function parentNode() { 
     return null; 
    } 

    public function beforeFilter() { 
     parent::beforeFilter(); 

     $this->Auth->allow(); 
    } 

} 

用戶:

<?php 
App::uses('AppModel', 'Model'); 
/** 
* User Model 
* 
*/ 
App::uses('AuthComponent', 'Controller/Component'); 
class User extends AppModel { 
    public $belongsTo = array('Group'); 
    public $actsAs = array('Acl' => array('type' => 'requester')); 

    public function parentNode() { 
     if (!$this->id && empty($this->data)) { 
      return null; 
     } 
     if (isset($this->data['User']['group_id'])) { 
      $groupId = $this->data['User']['group_id']; 
     } else { 
      $groupId = $this->field('group_id'); 
     } 
     if (!$groupId) { 
      return null; 
     } else { 
      return array('Group' => array('id' => $groupId)); 
     } 
    } 

    public function beforeSave($options = array()) { 
     $this->data['User']['password'] = AuthComponent::password($this->data['User']['password']); 
     return true; 
    } 

    public function beforeFilter() { 
     parent::beforeFilter(); 

     $this->Auth->allow(); 
    } 
} 
+0

這可能是一個好主意,做教程,它介紹瞭如何授予訪問權限... – burzum

回答

1

你看你掛了整整一章?大約一半的頁面,你會發現這行,我想這是你需要的

在我們設置ACL之前,我們需要添加一些用戶和組。在使用AuthComponent的情況下,我們將無法訪問我們的任何操作,因爲我們沒有登錄。現在我們將添加一些例外,以便AuthComponent允許我們創建一些組和用戶。在這兩個你GroupsController和你的UsersController添加以下內容:

public function beforeFilter() { 
    parent::beforeFilter(); 

    // For CakePHP 2.0 
    $this->Auth->allow('*'); 

    // For CakePHP 2.1 and up 
    $this->Auth->allow(); 
} 
+0

是的,我看了整個頁面結束,但我做了「蛋糕烘烤模型」後,模型不像以前的「蛋糕烘焙模型」我添加在模型上面,但問題仍然在這裏:( – Evolutio

+0

你把我在上面張貼的代碼在你的控制器? – arilia