2011-12-08 158 views
2

我已經將我的應用程序從CakePHP 1.3升級到2.0.4。CakePHP 2.0和基本身份驗證

以前,我只能在一個控制器中使用Security組件模擬Basic HTTP身份驗證。

我用來做這樣的事情:

$this->Auth->allow(array('*')); 
$this->Security->loginOptions = array('type'=>'basic','realm'=>'api'); 
$this->Security->loginUsers = array("api"=>"123"); 
$this->Security->requireLogin(); 

現在SecurityComponent不再處理基本和摘要式身份驗證,我需要做這樣的事情:

public $components = array(
    'Auth' => array(
     'authenticate' => array('Basic') 
    ) 
); 

但是當我在使用此我的ApiController將它重定向到/ users/login的登錄表單。我錯過了什麼嗎?

+0

有沒有這樣的運氣? –

回答

1

您需要使用您的登錄操作配置AuthComponent。你應該看看Cake book中的Configuring Authentication handlers這一節。

你的設置可能會類似於這樣:

public $components = array(
    'Auth'=> array(
    'loginAction' => array(
     'controller' => 'api', 
     'action'  => 'login' 
    ), 
    'loginRedirect' => array(
     'controller' => 'api', 
     'action'  => 'logged_on' 
    ), 
    'authenticate' => array(
     'Basic' => array(
     'realm' => 'api' 
    ) 
    ) 
) 
); 

此外,應該注意的是,蛋糕不再支持使用loginUsers屬性定義用戶。您可能需要擴展BasicAuthenticate類並覆蓋它的getUser()方法。

+0

它工作,謝謝! – xsquirrel