Ожидаю получить "non_field_errors: Невозможно войти в систему с предоставленными учетными данными", но не получаем его
Ожидание: если предоставлены неверные учетные данные для входа, возвращается "non_field_errors: Unable to log in with provided credentials" возвращается, как показано ниже (скриншот из tutorial, которому я следую дословно)
Реальность: вместо этого я получаю ошибку ниже.
Это выводится на консоль:
POST http://127.0.0.1:8000/api/v1/token/login 400 (Плохой запрос)
Интересно, что я получаю ту же ошибку, когда пытаюсь создать пользователей со слишком короткими паролями. У меня нет никаких проблем с axios или сервером, когда я предоставляю правильные учетные данные для входа в систему или использую пароли достаточной длины при создании новых пользователей. При попытке отловить ошибки, подобные этим, я не получаю ожидаемого результата.
Мой код для перехвата ошибки такой же, как и в учебнике:
methods: {
submitForm() {
axios.defaults.headers.common['Authorization'] = ''
localStorage.removeItem('token')
const formData = {
username: this.username,
password: this.password
}
axios
.post('/api/v1/token/login', formData)
.then(response => {
const token = response.data.auth_token
this.$store.commit('setToken', token)
axios.defaults.headers.common['Authorization'] = 'Token ' + token
localStorage.setItem('token', token)
this.$router.push('/dashboard/my-account')
})
.catch(error => {
if (error.response) {
for (const property in error.response) {
this.errors.push(`${property}: ${error.response.data[property]}`)
}
} else if (error.message) {
this.errors.push('Something went wrong. Please try again!')
}
})
}
}
Есть ли что-то в настройках сервера, что я должен изменить? Я использую Django, rest framework и djoser.
Не знаю, используете ли вы пользовательский обработчик исключений в Django rest framework, но похоже, что проблема может быть связана с тем, как вы обрабатываете ошибку в вашем фронтенд-приложении. Вы можете обрабатывать ошибки следующим образом.
methods: {
submitForm() {
axios.defaults.headers.common['Authorization'] = ''
localStorage.removeItem('token')
const formData = {
username: this.username,
password: this.password
}
axios
.post('/api/v1/token/login', formData)
.then(response => {
const token = response.data.auth_token
this.$store.commit('setToken', token)
axios.defaults.headers.common['Authorization'] = 'Token ' + token
localStorage.setItem('token', token)
this.$router.push('/dashboard/my-account')
})
.catch(error => {
if (error.response) {
// The request was made and the server responded with a status code
// that falls out of the range of 2xx
console.log(error.response.data);
console.log(error.response.status);
console.log(error.response.headers);
} else if (error.request) {
// The request was made but no response was received
// `error.request` is an instance of XMLHttpRequest in the browser and an instance of
// http.ClientRequest in node.js
console.log(error.request);
} else {
// Something happened in setting up the request that triggered an Error
console.log('Error', error.message);
}
console.log(error.config);
})
}
Можно найти здесь