#php #cakephp #cakephp-2.0 #basic-authentication
Вопрос:
Я работаю над устаревшим проектом, построенным на Cake PHP 2.10, и мне нужно условно использовать базовую аутентификацию HTTP в одном из действий моего контроллера. В настоящее время он настроен на использование identify
метода с запросом из действия контроллера, и мне нужно заставить его использовать базовую аутентификацию HTTP.
Я настроил его в своем действии контроллера, но при передаче моего имени пользователя и пароля как http basic через почтальона $user
возвращается логическое значение true
всегда, независимо от того, вошел я в систему или нет.
Что я здесь упускаю?
public function appv6()
{
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
$this->Auth->sessionKey = false;
$this->Auth->authenticate = array('Basic');
$user = $this->Auth->login();
var_dump($user);
die;
}
Ответ №1:
Вам не нужно звонить $this->Auth->login()
, когда используется базовая аутентификация. Я думаю, что в то время, когда вы его вызываете, пользователь уже прошел аутентификацию.
Поскольку для базовой и дайджест-аутентификации не требуется начальная запись или форма, поэтому при использовании только базовых / дайджест-аутентификаторов вам не требуется действие входа в свой контроллер… Проверка подлинности без сохранения состояния будет повторно проверять учетные данные пользователя при каждом запросе…