我制作了cakephp acl controlled application tutorial
我的问题出在这一步:
我们的控制器和模型现已准备好添加一些初始数据,我们的Group和User模型已绑定到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 :(得分: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();
}