cakephp无法注册用户"您无权访问该位置"

时间:2017-07-09 00:25:42

标签: php cakephp

在cakephp3中

我无法注册用户和"您无权访问该位置"消息显示。

在我的AppController.php中:

public function initialize()
{
    parent::initialize();
    $this->loadComponent('RequestHandler');
    $this->loadComponent('Flash');
    $this->loadComponent('Auth', [          
        'authorize' => ['Controller'],
        'loginRedirect' => [
            'controller' => 'Users',
            'action' => 'index'
        ],
        'logoutRedirect' => [
            'controller' => 'Users',
            'action' => 'login',
            'home'
        ],
    ]);
}

public function isAuthorized($user)
{
     return true;
}

public function beforFilter(Event $event) {
    parent::beforeFilter($event);
    $this->Auth->allow(['register', 'confirm', 'login']);
}

在我的UsersController.php中,我有一个函数寄存器(),我想调用它来执行用户注册。

3 个答案:

答案 0 :(得分:0)

您的功能名称错误。

function beforFilter(Event $event) {
    parent::beforeFilter($event);
    $this->Auth->allow(['register','confirm','login']);
}

应该是:

function beforeFilter(Event $event) {
    parent::beforeFilter($event);
    $this->Auth->allow(['register','confirm','login']);
}

答案 1 :(得分:0)

以上错误可能是由CSRF组件引起的。

如果您使用的是CSRF组件,则需要授予以下权限:

echo "Sync'ing acos"
bin/cake acl_extras aco_sync

echo "Granting permission"
bin/cake acl grant Role controllers/ControllerName

例如。

bin/cake acl grant Manager controllers/Users

然后不要忘记重新启动服务器。

答案 2 :(得分:-1)

如果你在AppController中使用beforeFilter(),那么尝试使用控制器名称和方法,

public function beforFilter(Event $event) {
    $this->Auth->allow(['Users.register', 'Users.confirm', 'Users.login']);
}
  

不要忘记使用课程"使用Cake \ Event \ EventManager"