2013-11-22 3 views
0

Я сделал cakephp acl controlled application tutorialCakePHP 2.4.2 учебник вопрос ACL

моя проблема на этом шаге:

Наши контроллеры и модели теперь нацелен на добавление некоторых исходных данных, и наши модели пользователей и групп привязаны к таблице Acl. Поэтому добавьте несколько групп и пользователей, используя выпеченные формы, просмотрев до http://example.com/groups/add и http://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