Cakephp 2.0 и базовая аутентификация - PullRequest
3 голосов
/ 08 декабря 2011

Я обновил свое приложение с CakePHP 1.3 до 2.0.4.

Ранее я мог использовать компонент Security для эмуляции базовой HTTP-аутентификации только в одном контроллере.

Раньше я делал что-то вроде этого:

$this->Auth->allow(array('*'));
$this->Security->loginOptions = array('type'=>'basic','realm'=>'api');
$this->Security->loginUsers = array("api"=>"123");
$this->Security->requireLogin();

Теперь SecurityComponent больше не обрабатывает обычную и дайджест-аутентификацию, и мне нужно сделать что-то вроде этого:

public $components = array(
    'Auth' => array(
        'authenticate' => array('Basic')
    )
);

Но когда я использую это на своем ApiController, он перенаправляет на мою форму входа в / users / login. Я что-то упустил?

1 Ответ

2 голосов
/ 08 декабря 2011

Вам необходимо настроить AuthComponent с вашим действием входа в систему.Вы должны проверить раздел Настройка обработчиков аутентификации в Cake book.

Ваша установка, вероятно, будет выглядеть примерно так:

public $components = array(
  'Auth'=> array(
    'loginAction' => array(
      'controller' => 'api',
      'action'     => 'login'
    ),
    'loginRedirect' => array(
      'controller' => 'api',
      'action'     => 'logged_on'
    ),
    'authenticate' => array(
      'Basic' => array(
        'realm' => 'api'
      )
    )
  )
);

Кроме того, она должнаСледует отметить, что Cake больше не поддерживает определение пользователей с помощью свойства loginUsers .Вам, вероятно, придется расширить класс BasicAuthenticate и переопределить его getUser () метод.

...