Интересно, почему ax ios -interceptors-response не может быть использован для обновления токена? - PullRequest
0 голосов
/ 17 марта 2020

Я делаю игрушечный проект, используя Spring boot с реакции. js.

Мне просто интересно, почему мой ответ топора ios -interceptors-response не может быть использован для реферера токена sh.
Почти все другие примеры, которые я видел, используют запрос-перехватчик для переопределения sh их токена доступа.
Это из-за бесконечного l oop, например: login -> interceptors.request -> AccessTokenInvalid - > получить новый AccessToken с топором ios -> interceptor et c.
Или есть другой способ управления refre sh токеном?

ax ios .interceptors.response

axios.interceptors.response.use((response) => {
return response
},
function (error) {
    const originalRequest = error.config;
    const refreshToken = localStorage.getItem('refreshToken');

    if (error.response.status === 403 && !originalRequest._retry && validateTimeRefreshToken && 
!validateTimeAccessToken()) {

        return axios.post('http://localhost:8080/jpa/system/getat', { "refreshToken": refreshToken })
            .then(res => {
                if (res.status === 200) {
                    sessionStorage.setItem('accessToken', res.data.data.accessToken);
                    sessionStorage.setItem('memberId', res.data.data.memberId);
                    sessionStorage.setItem('role', res.data.data.role);
                    axios.defaults.headers.common['Authorization'] = sessionStorage.getItem('accessToken');
                    return axios(originalRequest);
                }
            })
    }
    else if ((!validateTimeRefreshToken())) {
        sessionStorage.clear();
        localStorage.clear();
        window.location.href = "http://localhost:3000";
        alert('Session out');

    }

    return Promise.reject(error);
});
...