Почему я не могу увидеть ответ этого топора ios после запроса? - PullRequest
0 голосов
/ 13 января 2020

Я выполняю Сервис для проверки моих токенов доступа. Если я использую почтальон, я получу 3 типа ответов, и в псевдокоде это будет работать так:

//where response.data.status is the response received by my axios post to my backend
    if(response.data.status === "valid"){
      //allows access 
      return true
    }else if(response.data.status === "jwt expired"){
      //refresh the token
      //receive a new acces token
      //verify again the freshly received access token and return true or false based on this token verification
    }else{
      //every other case
      return false
    }

Но проблема в том, что мой (response.data.status === "jwt expired" ) никогда не произойдет, хотя это ответ, который возвращает почтальон если я вижу токен с истекшим сроком доступа. Я не понимаю, почему ax ios не обнаружит этот ответ, всякий раз, когда должно произойти else if(response.data.status === "jwt expired", если я console.log(response.data.status) возвращает неопределенное значение. В то же время я могу правильно настроить console.log в других случаях

Так выглядит мой настоящий код

    export default function isAuthenticated() {
    var accesstoken = Cookies.get('accesstoken');

    return axios({ method: 'post', url: 'http://localhost:3003/verify', headers: { Authorization: `Bearer ${accesstoken}` } })
        .then(function (response) {
            console.log("initial status of the token: "+response.data.status) //this will return undefined when the case of "jwt expired" must happen, the other ones work properly
            if (response.data.status === "valid") {
                //case 1 : token valid
                console.log("service valid, token didnt need refreshing")
                return true;
            } else if (response.data.status === "jwt expired") {
                //case 2 : token expired   
                //jwt is expired sends the token to refresh server and returns true or false based on refreshing process
                console.log("token is expired, proceds to refresh")
                axios({ method: 'post', url: 'http://localhost:3003/refresh_token', headers: { Authorization: `Bearer ${accesstoken}` } })
                    .then(function (response) {
                        accesstoken = response.data.accesstoken;
                        //once ive got the accesstoken return false if failed to refresh or redo the verification
                        if (accesstoken != "") {
                            axios({ method: 'post', url: 'http://localhost:3003/verify', headers: { Authorization: `Bearer ${accesstoken}` } })
                                .then(function (response) {
                                    if(response.data.status === "valid"){
                                        console.log("token refreshed and service valid returned true");
                                        return true;
                                    }else{
                                        console.log("refresh token attempted refresh but returned false")
                                        return false;
                                    }
                                })
                        } else {
                            console.log("refresh token failed to refresh and returned false")
                            return false;
                        }
                    })
            } else {
                //case 3 : other cases, token invalid / malformed...  
                console.log("service invalid")
                return false;
            }
        }).catch((error) => { //wont return anything
        if (error.response) {
            console.log(error.response.data);
            console.log(error.response.status);
            console.log(error.response.headers);
        } else if (error.request) {
            console.log(error.request);
        } else {
            console.log('Error', error.message);
        }
        console.log(error.config);
    });
}

1 Ответ

0 голосов
/ 13 января 2020

Не было никаких проблем с топором ios как таковым. Но я проверял ответ неправильно

Так что else if (response.data.status === "jwt expired") пришлось изменить на else if (response.data.error === "jwt expired") Чтобы я мог видеть сообщение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...