允许CakePHP Auth中的整个控制器和allow()不起作用

时间:2013-07-03 17:42:42

标签: php cakephp cakephp-2.3

我试图执行

$this->Auth->allow()中的

beforeFilter()但是,我需要添加整个控制器作为例外,即它需要公开,不需要用户登录。

只是执行$this->Auth->allow( every-function-in-this-controller )

的捷径

答案?

修改

我有这个:

<?php

App::uses('AppController','Controller');

class AllzonesController extends AppController {

    public function __beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('index');
    }

    public function index() {
        $this->layout = 'main';
        $this->set('Hello',"Hello world");
    }
}

正在转移Auth-login()

2 个答案:

答案 0 :(得分:6)

您提出的建议是适合您想要做的事情

public function beforeFilter() {
    $this->Auth->allow();
}

阅读API docs

  

获取当前控制器中不需要身份验证的操作列表,或者不包含允许所有操作的参数。

因此,没有参数的函数应允许普通用户(未登录)访问该控制器的每个操作。

编辑:

抱歉,错过了代码中的版本参考。 In here它说

 $this->Auth->allow('*');

是Cake 2.0(以及之前的版本,如@mark所述)

的合适方式

答案 1 :(得分:3)

对于CakePHP 2.1之外的版本

$this->Auth->allow() 而不是$this->Auth->allow('*')

对我的另一个问题__beforeFiter不是一个神奇的功能!

<?php

App::uses('AppController','Controller');

class AllzonesController extends AppController {

    public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('index');
    }

    public function index() {
        $this->layout = 'main';
        $this->set('Hello',"Hello world");
    }
}