【发布时间】:2012-03-05 12:29:58
【问题描述】:
我在一个简单的 CakePHP 2.0 应用程序中设置了基本身份验证。我首先将应用程序设置为使用常规表单身份验证,然后将以下行添加到我的 AppController.php 的 beforeFilter() 以启用基本 http 身份验证:
$this->Auth->authenticate = array('Basic');
这是完整的 AppController:
<?php
class AppController extends Controller {
public $components = array(
"Session",
"Auth" => array(
'loginRedirect' => array('controller'=>'users','action'=>'index'),
'logoutRedirect' => array('controller'=>'users','action'=>'index'),
'authError' => "You are not authorized to view this page.",
'authorize' => array('Controller'),
)
);
public function isAuthorized($user) {
return true;
}
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('index','view');
$this->set('logged_in', $this->Auth->loggedIn());
$this->set('current_user',$this->Auth->user());
$this->Auth->authenticate = array('Basic');
}
}
?>
理想情况下,我希望整个应用程序中的一个特定控制器(将公开用于移动设备的 API 的控制器)仅使用基本 HTTP 身份验证,而其余控制器的行为就像普通网络一样应用。
目前,如果我将不正确的凭据传递给控制器,我会收到 HTTP 302 响应,而我真的很想传回 HTTP 401。我该怎么做?
*编辑错别字
【问题讨论】:
-
题外话:您确定要将 Basic 用于移动应用程序吗? Basic 发送未加密的凭据,即使使用 SSL,也很容易被本地代理嗅探。 thinkvitamin.com/asides/…
-
我同意,这并不理想。我想开始使用 Digest Auth,这是更好的选择吗?
标签: php cakephp basic-authentication