我已将我的应用程序从CakePHP 1.3升级到2.0.4。
以前,我能够使用安全组件仅在一个控制器中模拟基本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 :(得分:2)
您需要使用登录操作配置AuthComponent。您应该查看Cake书中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'
)
)
)
);
此外,应该注意Cake不再支持使用 loginUsers 属性定义用户。您可能需要扩展 BasicAuthenticate 类并覆盖它的 getUser()方法。