Значение пароля волшебным образом исчезает при отправке формы - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь настроить аутентификацию внешнего интерфейса для реагирующего приложения, работающего на Django REST-API.

Конечная точка API регистрации работает хорошо, если я отправляю запрос на Postman. Тем не менее, программа ведет себя очень странно, когда я набираю информацию в форму регистрации внешнего интерфейса и нажимаю на кнопку отправить.

Пожалуйста, посмотрите на код ниже - я использую хук useInputState для отслеживания состояния данный вклад. Это работает нормально.

Функция registerUser принимает имя пользователя, пароль и адрес электронной почты и отправляет пост-запрос на выделенную конечную точку API.

Функция handleSubmit проверяет, совпадают ли пароли и выдает ошибку, если они этого не делают, это также хорошо работает. Если пароли совпадают, он вызывает registerUser и обеспечивает ввод данных пользователем.

Теперь где-то по пути пароль, который был передан в registerUser, исчезает (см. Комментарии). Я понятия не имею, откуда может возникнуть эта проблема, и любая помощь очень ценится!

function Register() {
  const { auth, dispatchAuth } = useContext(AuthContext);
  const { dispatchErrors } = useContext(ErrorContext);
  const { dispatchMessages } = useContext(MessageContext);

  const [username, setUsername] = useInputState("");
  const [email, setEmail] = useInputState("");
  const [password1, setPassword1] = useInputState("");
  const [password2, setPassword2] = useInputState("");

  const registerUser = ({ username, password, email }) => {
    // headers
    const config = {
      headers: {
        "Content-Type": "application/json",
      },
    };

    // Request body
    const body = JSON.stringify({
      username,
      password,
      email,
    });
    console.log("body:");
    console.log(body);
    // Output looks like: {"username":"testuser","email":"email@test.com"}
    // Where did the password go?!

    axios
      .post("/api/auth/register/", body, config)
      .then((res) => {
        dispatchAuth({ type: REGISTER_SUCCESS, payload: res.data });
      })
      .catch((err) => {
        dispatchErrors(returnErrors(err.response.data, err.response.status));
        dispatchAuth({ type: REGISTER_FAIL });
      });
  };

  const handleSubmit = (e) => {
    e.preventDefault();
    if (password1 !== password2) {
      dispatchMessages(
        createMessage({ passwordsNotMatch: "Passwords do not match" })
      );
    } else {
      console.log(password1); // Console output still contains the password
      const newUser = { username, password1, email };
      registerUser(newUser);
    }
  };

РЕДАКТИРОВАТЬ: Хорошо, я идиот и не заметил, что мне нужно изменить const newUser = { username, password1, email };, чтобы быть const newUser = { username, password, email };

1 Ответ

0 голосов
/ 21 апреля 2020

Хорошо, я идиот и не заметил, что мне нужно изменить const newUser = { username, password1, email }; на const newUser = { username, password, email };

...