Я пытаюсь передать полезную нагрузку аутентификации в бэкэнд API и получить код ответа, при обработке кода ответа об ошибке, он всегда приходит как неопределенный.Мы не можем определить правильный код ошибки http.В первом цикле я могу получить ответ http-кода в
catch(function (error) {
reject(console.log("errorin firstcatch", error.response.status));
});
})
, однако в функции авторизации ошибка становится неопределенной.
const authMock = (username, password)=>
new Promise((resolve, reject)=>{
let payload ={
username:username,
password:password
}
// const loginToken=generateJwt(payload);
// let headers = {
// "loginToken" : loginToken
// }
axios.post(apiBaseUrl,payload)
.then(function (response){
console.log("status", response.data.status_code);
if(response.status == 200||204){
resolve({token:response.data.access_token,
firstName:response.data.FirstName,
lastName:response.data.LastName,
profilePic: response.data.image})
}
else{
console.log("login rejected")
// reject({ status: 401 });
}
})
.catch(function (error) {
reject(console.log("errorin firstcatch", error.response.status));
});
})
function* authorize({ payload: { username, password } }) {
try {
const { token, firstName, lastName, profilePic } = yield call(authMock, username, password);
yield put({ type: AUTH_SUCCESS, payload: {token, firstName, lastName, profilePic} });
localStorage.setItem('token', token);
localStorage.setItem('firstName', firstName);
localStorage.setItem('lastName', lastName);
localStorage.setItem("profilePic", profilePic);
} catch (error) {
let message;
console.log("error", error);
switch (error) {
case 500: message = 'Internal Server Error'; break;
case 401: message = 'Wrong user ID'; break;
case 403: message = "Invalid credentials"; break;
default: message = "Something went wrong!"; break;
}
yield put({ type: AUTH_FAILURE, payload: message });
localStorage.removeItem('token');
localStorage.removeItem('firstName');
localStorage.removeItem('lastName');
localStorage.removeItem('profilePic');
}
}
function* Saga() {
yield takeLatest(AUTH_REQUEST, authorize);
}