允许用户使用CakePHP访问API

问题描述:

我正在构建一个CakePHP应用程序,并且我有一个API控制器。这包含了一些在网站上很常见的方法,我使用jQuery AJAX调用来做某些事情。我最近使用Auth组件实现了用户注册,但是现在,当我没有登录时尝试访问API时,我将重定向到登录页面。允许用户使用CakePHP访问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'); 
    } 
} 

我知道我可以让我与$this->Auth->allow()方法API控制器中的某些方法,但有什么办法让它控制器宽?例如,是否有我可以放在我的API控制器中的东西,以便未登录的用户也可以访问其方法?我宁愿不将每个动作的方法名称放在允许列表中,因为其中大约有30个。

谢谢。

在ApiController将这个:

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

这只会在CakePHP中2.1+工作,如果你正在使用CakePHP 2.0确保使用'$这个 - > Auth->允许( '*'); ' – Hoff 2012-07-11 01:55:51

+0

作品完美,谢谢:) – 2012-07-11 17:28:56