У меня установлена базовая аутентификация в простом приложении CakePHP 2.0. Сначала я настроил приложение на использование обычной проверки подлинности с помощью формы, а затем добавил следующую строку в beforeFilter()
моего AppController.php, чтобы включить базовую проверку подлинности 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. Как я могу это сделать?
* отредактировано для опечатки