vue无感刷新

干前端工作也有一小段时间了。这不,研究了下vue项目里的无感刷新。可能有经验的大佬都知道也会敲。大佬就略过吧。
vue无感刷新,大致的原理就是后端返回两个token给前端。(一个是请求的token,另一个是到期或者快到期后换取新token的那个token)

javascript 复制代码
import axios from 'axios'
import { MessageBox, Message } from 'element-ui'

//业务请求的接口
const service = axios.create({
    baseURL: process.env.VUE_APP_BASE_API, 
    timeout: 5000 // request timeout
})

//freshToken 就是当前token过期后到后端再次换取新token的接口
const freshToken = axios.create({
    baseURL: process.env.VUE_APP_BASE_API,
    timeout: 5000
})
//上面两个 service freshToken 虽然两个都是一样,但是有区别的,下面会用到





// 请求前的参数,一般我们的请求头都是在这儿设置
service.interceptors.request.use(
    (config) => {
        let token = localStorage.getItem("token")
        config.headers.Authorization = token
        return config
    },
    (error) => {
        //请求出错的处理
    }
)

//响应拦截器
service.interceptors.response.use(
    (response) => {
        //响应成功后的处理(也就是业务请求成功后的处理)
    },

    //敲黑板在这儿,重点
    async(error) => {
        //首先判断当前token是否过期,如果过期就走下面的if
        //freshToken函数也就是上面定义的换取新token的接口
        if (error.response.status == '401') {
            let newTookenObj = await freshToken({
                method: 'get',
                url: '/api/login/getNewToken'
            })
            //newTookenObj新的token
            //这儿还有一个就是换取新token之后,重新保存。
            return (error.response.config) //记住这儿一定要返回出去,也就是重新走之前请求没走完的业务
        }
    }
)

export default service
相关推荐
千寻技术帮1 小时前
10422_基于Springboot的教务管理系统
java·spring boot·后端·vue·教务管理
是梦终空3 小时前
计算机毕业设计260—基于Springboot+Vue3+Ai对话的非遗传承管理系统(源代码+数据库+2万字论文)
spring boot·vue·毕业设计·课程设计·毕业论文·ai对话·非遗传承管理系统
PascalMing11 小时前
Pascal.Edge物联网平台:生产企业设备数据采集与管理解决方案
物联网·c#·vue·数据采集
启扶农12 小时前
lecen:一个更好的开源可视化系统搭建项目--介绍、搭建、访问与基本配置--全低代码|所见即所得|利用可视化设计器构建你的应用系统-做一个懂你的人
低代码·vue·node·所见即所得·表单设计·页面可视化·页面设计器
爱分享的小诺13 小时前
在谷歌浏览器上的谷歌商店进不去,可以使用...
vue·谷歌浏览器·扩展插件
小徐不会敲代码~1 天前
Vue3 学习 5
前端·学习·vue
今天有个Bug2 天前
【计算机毕业设计】流浪动物救助平台 - SpringBoot+Vue
sql·mysql·spring·vue·毕业设计·课程设计
捧 花2 天前
前端如何调用后端接口(HTML + JS & Vue )
服务器·golang·vue·api·前后端交互
扶我起来还能学_2 天前
Vue3 proxy 数据响应式的简单实现
前端·javascript·vue
IT教程资源D2 天前
[N_101]基于springboot,vue企业网盘系统
mysql·vue·前后端分离·springboot网盘