Vue3中的Token失效拦截处理方式
更新时间:2024年08月30日 14:45:01 作者:velpro_!
这篇文章主要介绍了Vue3中的Token失效拦截处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Vue3 Token失效拦截处理
Token的有效性可以保持一段时间,如果用户一段时间不做任何操作,Token就会失效,使用失效的Token再去请求一些接口,接口就会报错,所以需要我们做一些处理
1. 在响应拦截器里面拦截这个错误
2. 拦截到后需要做的事:
- 1)应清除掉过期的用户信息
- 2) 跳转到登录页
// utils/http.js
import axios from "axios";
import {useUserStore} from "@/stores/user";
import router from '@/router'
const httpInstance = axios.create({
baseURL: 'url', // 基地址
timeout: 5000 // 超时器
})
//拦截器
httpInstance.interceptors.request.use(config => {
return config
}, e => Promise.reject(e))
//响应器
httpInstance.interceptors.response.use(res => res.data, e => {
const userStore = useUserStore() //pinia管理的用户数据
// 401 token失效处理
// 1. 清除本地用户数据
// 2.跳转到登录页
if (e.response.status === 401) {
userStore.clearUserInfo()
// userStore.userInfo = {}
router.push('/login')
}
return Promise.reject(e)
})
export default httpInstanceVue axios 响应拦截 token失效导致出现多个提示框的
// 响应拦截器
let isToken=false
request.interceptors.response.use((res)=>{
// 没错误返回200 错误·拦截
if (res.data.code ===200) {
return res;
}else if (res.data.code === 404){
router.push('/login')
}else if(res.data.code === 10020){
// 防止失效导致出现多个提示框的解决办法
if(!isToken){
isToken=true
window.localStorage.removeItem('user')
router.push('/login')
setTimeout(()=>{
isToken=false
},2000)
return Message.warning(res.data.message)&&Promise.reject(res.data.message);
}
}
},)
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
vue3+elementui-plus实现无限递归菜单示例代码
这篇文章主要介绍了vue3+elementui-plus实现无限递归菜单,当一个组件的 key 值发生变化时,Vue 会认为这是一个新的组件实例,会强制重新创建和渲染这个组件,本文通过示例代码详细讲解,需要的朋友可以参考下2024-04-04
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
这篇文章主要介绍了基于vue-cli、elementUI的Vue超简单入门小例子,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-04-04
vue3+js+elementPlus使用富文本编辑器@vueup/vue-quill详细教程
富文本编辑器在任何项目中都会用到,下面这篇文章主要给大家介绍了关于vue3+js+elementPlus使用富文本编辑器@vueup/vue-quill的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下2024-07-07


最新评论