1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > axios无感刷新token

axios无感刷新token

时间:2023-10-13 13:07:45

相关推荐

axios无感刷新token

token刷新流程图

axios响应拦截器代码:

async function (error: AxiosError<{ message: string }>) {// 如果没有response则网络问题if (!error.response) {return Toast.show({icon: 'fail',content: '网络错误!',})}if (error.response.status === HttpStatusCode.Unauthorized) {const { token, refresh_token } = store.getState().loginif (!token) {// 没有token登录都没有登录 直接去登录history.replace(`/login?redirect=${history.location.pathname}`)Toast.show({icon: 'fail',content: '请先登录',})return Promise.reject(error)}try {// 有token那就是过期了 刷新token 用新的axios实例发请求否则会继续走拦截器造成死循环401const response = await axios<AxiosResponse<Token>>({url: '/authorizations',baseURL: '/',method: 'PUT',headers: {Authorization: `Bearer ${refresh_token}`,},})// 更新token到reduxstore.dispatch({type: 'auth/login',payload: {token: response.data.data.token,refresh_token,},})// 重新发起失败的请求return request(error.config!)} catch (error) {// refresh_token失效导致无感刷新失败,直接去登录history.replace(`/login?redirect=${history.location.pathname}`)return Promise.reject(error)}}Toast.show(error.response.data.message) // 打印兜底错误return Promise.reject(error) // 每一个case都得return 否则使用相应结果的地方会访问undefined导致报错}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
前端无感刷新token

前端无感刷新token

2019-01-09

vue无感刷新token

vue无感刷新token

2023-03-05

实现双token无感刷新

实现双token无感刷新

2020-02-05

Vue 无感刷新token

Vue 无感刷新token

2023-08-17