Как использовать дайджест-аутентификацию в CakePHP3.x - PullRequest
0 голосов
/ 16 сентября 2018

Я создаю API для своего приложения cakePHP.Я следовал за документацией, я добавил этот код в AppController:

 $this->loadComponent('Auth', [
            'authenticate' => [
                'Digest' => [
                    'fields' => ['username' => 'username', 'password' => 'digest_hash'],
                    'userModel' => 'Users'
                ],
            ],
            'storage' => 'Memory',
            'unauthorizedRedirect' => false
        ]);

Также я хэшировал пароль, добавив следующий код в UsersTable.php:

public function beforeSave(Event $event)
    {
        $entity = $event->getData('entity');

        // Make a password for digest auth.
        $entity->digest_hash = DigestAuthenticate::password(
            $entity->username,
            $entity->plain_password,
            env('SERVER_NAME')
        );

        return true;
    }

Я исключилзарегистрируйте метод авторизации, используя этот код внутри UsersController.php

 public function beforeFilter(Event $event) {
        parent::beforeFilter($event);
        $this->Auth->allow(['add']);
      } 

Я тестирую API с помощью почтальона, я успешно добавил пользователя, и вывод:

"username": "Lio",
"digest_hash": "0cbcff228b5d0e085bc99721cbc1bea7",
"id": 8

Теперь, как я могу использовать digest_hash для входа в систему и как я могу авторизовать остальные методы, используя digest_hash?Мне нужно написать метод входа?или мне нужно отправлять имя пользователя и digest_hash в качестве заголовков с каждым запросом?

...