Торт php 2.10 вход в систему с помощью http базовая аутентификация в действии контроллера

#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() , когда используется базовая аутентификация. Я думаю, что в то время, когда вы его вызываете, пользователь уже прошел аутентификацию.

Поскольку для базовой и дайджест-аутентификации не требуется начальная запись или форма, поэтому при использовании только базовых / дайджест-аутентификаторов вам не требуется действие входа в свой контроллер… Проверка подлинности без сохранения состояния будет повторно проверять учетные данные пользователя при каждом запросе…

https://book.cakephp.org/2/en/core-libraries/components/authentication.html#using-digest-and-basic-authentication-for-logging-in