Предоставление пользователям доступа к API с CakePHP

Я создаю приложение CakePHP, и у меня есть контроллер API. Он содержит некоторые методы, которые распространены на сайте, и я использую их с вызовами jQuery AJAX для выполнения определенных задач. Недавно я реализовал регистрацию пользователей с помощью компонента Auth, но теперь всякий раз, когда я пытаюсь получить доступ к API, когда я не вошел в систему, меня перенаправляют на страницу входа.

Это мой AppController код:

class AppController extends Controller {   
    public $components = array('Session', 'Auth' => array(
        'loginRedirect' => array('controller' => 'users', 'action' => 'images'),
        'logoutRedirect' => array('controller' => 'pages', 'action' => 'home')
    ));

    public function beforeRender() {
        $this->set('loggedIn', $this->Auth->loggedIn());
        $this->set('username', $this->Auth->user('username'));
    }

    public function beforeFilter() {
        $this->Auth->allow('home', 'register', 'login');
    }
}

Я знаю, что могу разрешить определенные методы в моем API-контроллере с помощью метода $this->Auth->allow(), но есть ли способ сделать его доступным для всего контроллера? Например, есть ли что-то, что я могу поместить в свой контроллер API, чтобы пользователи, не вошедшие в систему, также могли получить доступ к его методам? Я бы не хотел указывать имена методов для каждого действия в списке разрешенных, потому что их около 30.

Спасибо.


person James Dawson    schedule 10.07.2012    source источник


Ответы (1)


Поместите это в ApiController:

public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow(); //pass no arguments to allow all
}
person tyjkenn    schedule 11.07.2012
comment
Это будет работать только в CakePHP 2.1+, если вы используете CakePHP 2.0, обязательно используйте $this->Auth->allow('*'); - person Hoff; 11.07.2012