0

我制作的cakephp acl受控应用教程

我的问题出在这一步:

我们的控制器和模型现在已准备好添加一些初始数据,并且我们的 Group 和 User 模型绑定到 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();
    }
}
4

1 回答 1

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();
}
于 2013-11-22T20:56:10.653 回答