Я обновил свое приложение с 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 больше не обрабатывает Basic и Digest Authentication, и мне нужно сделать что-то вроде этого:
public $components = array( 'Auth' => array( 'authenticate' => array('Basic') ) );
Но когда я использую это на своем ApiController, он перенаправляется на мою регистрационную форму в / users / login. Я что-то упускаю?
Вам необходимо настроить AuthComponent с действием входа в систему. Вы должны ознакомиться с разделом « Настройка обработчиков проверки подлинности» в книге «Торт».
Ваша установка, вероятно, будет выглядеть примерно так:
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 () .