Cakephp 2.0和基本身份验证

时间:2011-12-08 18:04:05

标签: php cakephp cakephp-2.0

我已将我的应用程序从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。我错过了什么吗?

1 个答案:

答案 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()方法。