2012-07-10 192 views
1

我正在構建一個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個。

謝謝。

回答

2

在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

相關問題