Вход в AJAX с React + CakePHP3 - Auth-> identifier () возвращает false - PullRequest
1 голос
/ 30 октября 2019

Я новичок в ReactJS и Cakephp. Мне удалось написать некоторые API для извлечения / фильтрации сообщений из моей БД, но сейчас я борюсь с частью Аутентификация.

На самом деле я сделал регистрацию довольно легко, теперь я пытаюсьсделать форму входа (с помощью React). Я могу отправить имя пользователя и пароль в свой бэкэнд, но $ this-> Auth-> identifier () возвращает false.

Это то, что я уже проверил / сделал:

  • Длина столбца пароля БД 255 varchar

  • Пароль пользователя БДправильно хешируется после регистрации

  • Передать сущность пользователя с пользовательскими данными для метода identifier () в качестве параметра

  • $ this-> request-> input ('json_decode', true);верните правильно имя пользователя и пароль (пароль не хешируется)

Так что у меня есть некоторые сомнения:

  • Я передаю данные пользователя в виде JSON через fetch (), но когда он достигает бэкэнда, это простой текст, так что мне нужно json_encode, чтобы данные, прежде чем identifier () смог обработать его? или Идентифицирует () хэширует ли мой пароль, когда он пытается найти пользователя / пароль внутри моей БД?

ReactJS

handleSubmit(e) {
    e.preventDefault();
    let myHeaders = new Headers();

    // state structure
    // this.state={username:'userName', password: '123asdqwe'};

    let myInit = { 
        method: 'POST',
        headers: myHeaders,
        mode: 'cors',
        body: JSON.stringify(this.state)
    };

    fetch('url/users/login', myInit)
    .then(() => {console.log("done");});
}

CakePHP Функция входа в систему (базовая)

public function login()
    {
        if ($this->request->is('post')) {
            $user = $this->Auth->identify();

            if ($user) {
                $this->Auth->setUser($user);

                $this->response->body(json_encode(array("user_id" => $this->Auth->user('id'))));
                return $this->response;
            } else {
                $this->response->body(json_encode(array("error" => "error")));
                return $this->response;
        }
    }
}

На самом деле я не знаю, как поступить, я не могу найти никаких примеров в Интернете, и документ не дает мне никакой подсказки.

Как я должен обрабатывать данные перед входом в систему?

Спасибо.

...