Reactjs 如何在react redux中实现刷新令牌
我所做的以下代码允许刷新访问令牌,当第一次请求响应返回未经授权的响应时,运行服务来刷新访问令牌。 代码运行良好,刷新令牌服务在Java制作的后端上运行。 代码不完整,只有对刷新令牌方法的调用。 下面显示了代码Reactjs 如何在react redux中实现刷新令牌,reactjs,async-await,react-redux,axios,refresh-token,Reactjs,Async Await,React Redux,Axios,Refresh Token,我所做的以下代码允许刷新访问令牌,当第一次请求响应返回未经授权的响应时,运行服务来刷新访问令牌。 代码运行良好,刷新令牌服务在Java制作的后端上运行。 代码不完整,只有对刷新令牌方法的调用。 下面显示了代码 const apiMiddleware = ({ dispatch }) => (next) => (action) => { const result = next(action); if (action.type !== API) { return r
const apiMiddleware = ({ dispatch }) => (next) => (action) => {
const result = next(action);
if (action.type !== API) {
return result;
}
const {
url,
method,
data,
onSuccess,
types,
} = action.payload;
const axiosInstance = createAxios();
const refreshToken = async(originalRequest) => {
const axiosInstance = createAxios();
const data = authUtil.getUserLoggedIn();
const response = await axiosInstance({
url: `${AUTH_ENDPOINT}/refresh-token`,
method: 'PUT',
data: { token: data.refreshToken },
});
if (response.status === 200) {
authUtil.setUserLoggedIn(response.data);
originalRequest.headers['Authorization'] = response.data.accessToken;
axiosInstance(originalRequest)
.then(({ data }) => {
handlerSuccess({ data });
return result;
});
} else {
dispatch(apiError(types[1], response.error));
}
};
const handlerSuccess = ({ data }) => {
dispatch(onSuccess(data));
};
axiosInstance({
method,
url,
data,
})
.then(({ data }) => {
handlerSuccess({ data });
return result;
})
.catch((error) => {
if (error.response && error.response.status === 403) {
dispatch(accessDenied(types[2], window.location.pathname));
} else if (error.response && error.response.status === 401) {
refreshToken(error.config);
}
return result;
})
};
export default apiMiddleware;
有人可以帮我改进这个代码