token失效重新存储发起请求

server/2024/12/14 17:39:41/

 

import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import Router from '@/router'
import { getCookie, setToken, setCookie } from './auth'// 因为后端环境区分v1 v2 剔除测试盛传的环境配置,并添加统一前缀
const url = process.env.VUE_APP_BASE_API
// axios.defaults.baseURL = 'http://192.168.24.48:8080/vwdata'// create an axios instance
const service = axios.create({baseURL: url, // url = base url + request urlwithCredentials: true, // send cookies when cross-domain requeststimeout: 60000, // request timeoutcrossDomain: true
})// request interceptor
service.interceptors.request.use(config => {// do something before request is sentif (store.state.user.token) {// let each request carry token// ['X-Token'] is a custom headers key// please modify it according to the actual situation// config.headers['token'] = getToken()config.headers['token'] = getCookie('user_token')}// The request parameter defaults to objectconfig.data = config.data || {}// Determine whether global loading is needed according to the request parameter s s s needload fieldreturn config},error => {// error  reset loading// do something with request errorconsole.log(error) // for debugreturn Promise.reject(error)}
)window.islogin = true
// response interceptor
service.interceptors.response.use(/*** If you want to get http information such as headers or status* Please return  response => response*//*** Determine the request status by custom code* Here is just an example* You can also judge the status by HTTP Status Code*/response => {const res = response.data// if the custom code is not 20000, it is judged as an error.// 后台返回0失败1成功// if (!getToken()) {//   Router.push('/login')// }if (res.code === 0 || res.code === 1) {return res} else if (res.code === -1) {if (window.islogin) {window.islogin = falseMessageBox.alert(res.message, '登录失效', {confirmButtonText: '去登录',showClose: false}).then(() => {Router.push('/login')})}} else if (res.code === 401) {Router.push('/err.401')} else if (res.code === 1001) {setCookie('user_token', res.data.token)response.config.headers['token'] = res.data.tokenreturn axios.request(response.config)}else {if(res.message){Message({message: res.message,type: 'error',duration: 5000})}else{return response}}},error => {console.log('err' + error) // for debugMessage({message: error.msg || '网络异常',type: 'error',duration: 5 * 1000})return Promise.reject(error)}
)export default service


http://www.ppmy.cn/server/150142.html

相关文章

日常健康:点滴积累,守护生命活力

在现代社会的快节奏生活中,日常健康往往容易被忽视,然而,它却是我们享受美好生活、实现人生价值的基石。 饮食方面,注重营养均衡是关键。每日三餐应合理搭配,保证碳水化合物、蛋白质、脂肪、维生素和矿物质的充足摄入。…

Nginx反向代理与负载均衡应用实践

Nginx反向代理与负载均衡应用实践 1.1 集群简介 简单地说 ,集群就是指一组(若干个)相互独立的计算机 ,利用高速通信网络组成的一 个较大的计算机服务系统 ,每个集群节点(即集群中的每台计算机)…

Android 好的开源库

1. 权限请求框架 GitHub - getActivity/XXPermissions: Android 权限请求框架,已适配 Android 14 2. 下载框架 GitHub - lingochamp/okdownload: A Reliable, Flexible, Fast and Powerful download engine.

linux-16 关于shell(十五)date,clock,hwclock,man,时间管理,命令帮助

想显示一下当前系统上的时间该怎么显示?有一个命令叫做date,来看date命令,如下图, 第一个星期几对吧?然后是月日小时分钟秒,最后一个是年对吧?CST指的是它的时间格式,我这个可以先姑…

每天40分玩转Django:Django模板系统

Django模板系统 一、课程概述 学习项目具体内容预计用时模板语法变量、标签、过滤器、注释90分钟模板继承模板层级、块、包含60分钟静态文件配置、管理、使用90分钟 二、模板基础配置 2.1 模板配置 # settings.py TEMPLATES [{BACKEND: django.template.backends.django.D…

软包拆垛自动化:深度视觉与智能算法如何重塑行业格局?

在现代工业生产和物流场景中,自动化拆垛已成为提升效率和降低人工操作风险的关键环节。特别是在涉及软包、纸箱、麻包袋等不规则物体的行业,如塑胶粒子、化肥、食品加工等。 软包拆垛的行业挑战 软包、纸箱等不规则物体在堆垛时由于形状不规则、材质多…

UE5 C+、C++、C# 构造方法区别示例

我们对比一下UE C、C 、C#的构造方法&#xff1a; 1. UE4 C例子&#xff1a; // 声明和构造合并在一起static ConstructorHelpers::FObjectFinder<UTexture2D> CrosshairTexObj(TEXT("/Game/Path"));// 使用加载的资源UTexture2D* Texture CrosshairTexObj.…

掌握 MySQL 事务:ACID、隔离级别详解

一、前言 事务是关系型数据库中的重要概念&#xff0c;用于保证一组数据库操作作为一个单独的工作单元来执行。无论是银行转账、订单处理还是复杂的数据修改&#xff0c;事务都能保证操作的一致性和完整性。 本文将带您从基础概念到高级技巧&#xff0c;全面了解 MySQL 事务的…