Разрешить весь контроллер в CakePHP Auth и allow() не работает
Я пытался выполнить
$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 ответа
То, что вы предложили, является подходящим способом того, что вы хотите сделать
public function beforeFilter() {
$this->Auth->allow();
}
Чтение документации по API
Принимает список действий в текущем контроллере, для которых аутентификация не требуется, или нет параметров, разрешающих все действия.
Таким образом, функция без параметров должна позволять обычному пользователю (не зарегистрированному) получать доступ к каждому действию этого контроллера.
РЕДАКТИРОВАТЬ:
Извините, пропустил ссылку на версию в вашем теге. Здесь говорится
$this->Auth->allow('*');
является подходящим способом для Cake 2.0 (и предыдущих версий, как отмечено @mark)
Для версий за пределами 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");
}
}