Cakephp 5: токен доступа к API не соответствует хешированному токену в БДPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Cakephp 5: токен доступа к API не соответствует хешированному токену в БД

Сообщение Anonymous »


Я работаю над проектом, который требует от меня создания конечной точки API, которую третья сторона (клиенты) может интегрировать в свой веб-сайт, при этом для доступа к конечной точке требуется токен доступа к API

До сих пор мне удавалось сгенерировать токен и хешировать его, а также сохранить простой токен в базе данных, поскольку клиент/разработчик должен видеть простой токен, однако хэш-код следует использовать для проверки на соответствие полю хеш-токена, как мы используйте поле пароля и хешированного пароля.

Ниже показано, как я хеширую это в базу данных:

публичная функция beforeSave(EventInterface $event) { $entity = $event->getData('entity'); если ($entity->isNew()) { $hasher = новый DefaultPasswordHasher(); $entity->public_token = Security::hash(Security::randomBytes(32), 'sha256', false); $entity->token = $hasher->hash($entity->public_token); } вернуть истину; } Ниже включено в мой aplication.php

$authenticationService->loadIdentifier('Authentication.Token'); $authenticationService ->loadAuthenticator('Authentication.Token', [ 'queryParam' => 'токен', 'header' => 'Авторизация', 'tokenPrefix' => 'Носитель', ]); Это включено в мой AppController.php

$this->loadComponent('Authorization.Authorization'); $this->Authentication->setConfig('authenticate', [ 'Токен' => [ 'филды' =>[ 'пароль' => 'токен' ], 'tokenField' => 'токен', 'dataField' => 'токен', 'resolver' => 'Authentication.Orm', 'hashAlgorithm' => 'sha256', ], ]); И мой метод входа в систему UsersController.php

публичная функция входа() { $this->Авторизация->skipAuthorization(); $result = $this->Аутентификация->getResult(); если($результат->isValid()){ пытаться { $this->Authorization->authorize($this->Authentication->getIdentity()->getOriginalData()); }catch(\Исключение $ex){ $пользователь = [ 'message' => 'у вас нет учетных данных для доступа к этому API' ]; } $user = $result->getData(); }еще{ $this->response =$this->response->withStatus(401); $пользователь = [ 'message' => 'неправильные данные для входа' ]; пр($результат); Выход; } $this->set('пользователь', $пользователь); $this->viewBuilder()->setOption('serialize', 'user'); $this->viewBuilder()->setClassName("Json"); } С добавленной ниже функцией отладки:

pr($result); Выход; Я получаю следующую ошибку:

Объект аутентификации\Authenticator\Result ( [_status:protected] => FAILURE_CREDENTIALS_MISSING [_данные:защищено] => [_errors:protected] => Массив ( [0] => Учетные данные для входа не найдены ) ) Типичный токен доступа к API выглядит следующим образом

'token' => '$2y$10$QW2VLbNkxPIbHNhEMxy2qeNbx2/KI21ff0Hjku0mTYWOK245hOXea' 'public_token' => 'f2f7014286b2079d4e4877cd145ab3d7d3024ebaf8c438be231819448e7ab7b8' Моя цель — сделать что-то подобное

$http = новый клиент([ 'headers' => ['Авторизация' => 'Носитель' . f2f7014286b2079d4e4877cd145ab3d7d3024ebaf8c438be231819448e7ab7b8] ]); он ​​должен получить доступ к предоставленному URL-адресу: http://localhost/myapp/api/v1/orders/listing'

Public_token должен проходить аутентификацию по токену поля, который был хеширован с ним.

Однако, когда я использую простой текстовый токен (public_token), он возвращает указанную выше ссылку на ошибку, но когда я использую HASHED токен (поле токена), он возвращает успех.

Буду рад, если кто-нибудь поможет мне решить эту проблему.

Заранее еще раз спасибо.

https://book.cakephp.org/authentication ... html#token

https://book.cakephp.org/authentication ... html#token

https://book.cakephp.org/4/en/controlle ... entication
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»