Я пытаюсь настроить аутентификацию внешнего интерфейса для реагирующего приложения, работающего на 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 };