允许用户使用CakePHP访问API

时间:2012-07-10 23:41:58

标签: php api cakephp authentication controllers

我正在构建一个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个。

感谢。

1 个答案:

答案 0 :(得分:2)

把它放在ApiController中:

public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow(); //pass no arguments to allow all
}