我目前正在开发一个当前具有表单身份验证的 CakePHP 应用程序。我还想打开此应用程序以供其他应用程序通过 REST 连接。
我知道 CakePHP 可以使用
Router::mapResources()
和
Router::parseExtensions()
但是,我不确定如何使用基本或摘要 HTTP 身份验证。
我在 AppController.php 中有以下内容
public $components = array(
'Session',
'Auth' => array(
'authenticate' => array(
'Form'
),
'loginAction' => array(
'admin' => false,
'controller' => 'users',
'action' => 'login'
),
'loginRedirect' => array(
'controller' => 'users',
'action' => 'home'
)
)
);
如果对于身份验证字段,例如我在“基本”中使用 - 当登录到基于 Web 的版本时,我得到一个 HTTP 身份验证框,而不是基于 Web 的表单。
这样做的最佳方法是什么?目前我能想到的唯一方法是创建一个单独的 ApiController 并手动进行身份验证?
任何建议都会很棒。
更新:
这是我修改后的代码,它给了我正确的行为——我很确定应该有更好的方法来做到这一点。
class AppController extends Controller {
public $components = array(
'Session',
'RequestHandler',
'Auth' => array(
'loginAction' => array(
'admin' => false,
'controller' => 'users',
'action' => 'login'
),
'loginRedirect' => array(
'controller' => 'users',
'action' => 'home'
)
)
);
public $helpers = array('Html', 'Form', 'Session');
public function beforeFilter() {
$header = $_SERVER['HTTP_AUTHORIZATION'];
if($header) {
$this->Auth->authenticate = array('Basic');
}
}
}