CakePHP Аутентификация действий входа - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь настроить новый метод аутентификации из CakepHP. При входе в систему я получаю сообщение отладки, что учетные данные отсутствуют. В запросе POST представлены поля электронной почты и пароль. Я что-то упустил?

    /**
     * Login method
     */
    public function login()
    {
        $result = $this->Authentication->getResult();

        // regardless of POST or GET, redirect if user is logged in
        if ($result->isValid()) {
            $redirect = $this->request->getQuery('redirect', ['controller' => 'Pages', 'action' => 'display', 'home']);
            return $this->redirect($redirect);
        }

        // display error if user submitted and authentication failed
        if ($this->request->is(['post']) && !$result->isValid()) {
            $this->Flash->error('Invalid username or password');
        }
    }


public function getAuthenticationService(ServerRequestInterface $request, ResponseInterface $response)
    {
        $service = new AuthenticationService();

        $fields = [
            'username' => 'email',
            'password' => 'password'
        ];

        // Load identifiers
        $service->loadIdentifier('Authentication.Password', compact('fields'));

        // Load the authenticators, you want session first
        $service->loadAuthenticator('Authentication.Session');
        $service->loadAuthenticator('Authentication.Form', [
            'fields' => $fields,
            'loginUrl' => '/users/login'
        ]);

        return $service;
    }

РЕДАКТИРОВАТЬ: После редактирования параметров Аутентификатора формы с полем имени пользователя / сообщения появляется следующая ошибка: FAILURE_IDENTITY_NOT_FOUND

Отладка SQL говорит, что запись найдена в таблице Users.

SELECT 
  Users.id AS `Users__id`, 
  Users.email AS `Users__email`, 
  Users.password AS `Users__password`, 
  Users.role AS `Users__role`, 
  Users.created AS `Users__created`, 
  Users.modified AS `Users__modified` 
FROM 
  users Users 
WHERE 
  Users.email = 'my@my.com' 
LIMIT 
  1

Структура таблицы пользователей

id Primary key  int(11)
email   varchar(255)    utf8mb4_general_ci
password    varchar(255)    utf8mb4_general_ci
role    varchar(255)
created datetime
modified    datetime

1 Ответ

0 голосов
/ 16 мая 2019

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

...