Мне нужно отфильтровать запросы json и разрешить базовую аутентификацию для этих запросов, разрешая только проверку подлинности только для html-запросов. Когда я фильтровать запросы в моей функции инициализации в AppController.php:Как использовать базовую аутентификацию для запросов json и проверку подлинности формы для html-запросов с помощью Cakephp 3?
if ($this->request->is('json')) {
$this->loadComponent('Auth', [
'authorize' => ['Controller'],
'authenticate' => [
'Basic' => [
'fields' => ['username' => 'email', 'password' => 'password'],
'contain' => ['Districts']
]
]
]);
} else {
$this->loadComponent('Auth', [
'authorize' => ['Controller'],
'authenticate' => [
'Form' => [
'fields' => ['username' => 'email', 'password' => 'password'],
'contain' => ['Districts']
]
],
'loginAction' => [
'controller' => 'Users',
'action' => 'login'
],
'logoutRedirect' => [
'controller' => 'Users',
'action' => 'login'
]
]);
}
запрос JSON создает и сохраняет сеанс, позволяющий пользователю получить доступ к остальной части сайта, в том числе HTML запросов, поскольку он имеет авторизованный сеанс , Я изо всех сил пытался найти то, что вызывало это, и в итоге обнаружил, что вам нужно явно объявить, что носитель данных для метода базовой аутентификации «Память». Я поставлю правильный код в своем ответе ниже.
Этот вопрос похож на этот один для CakePHP 2: CakePHP form authentication for normal requests with basic authentication for JSON