//1.新建axios实例
import axios from 'axios'
import jsCookie from 'js-cookie'
import router from "@/router";
import Base from "../util/Base64";
const instance = axios.create({
baseURL: 'http://192.168.1.84:8081/m.api',//url
timeout: 3000//请求超时
});
// 2.拦截器的配置
// 2.1 请求拦截
// 请求拦截器
instance.interceptors.request.use((config) => {
config.headers['AdminToken'] = jsCookie.get('AdminToken')
return config
}, function (error) {
return Promise.reject(error)
})
// // 2.2 响应拦截
// // 添加响应拦截器---无限刷新令牌,无痛刷新,令牌刷新
instance.interceptors.response.use(
(response) => {
// console.log('response', response);
const code = response.data.errno;
if (code == "10001" || code == "10006") {
// console.log('user',jsCookie.get('user'))
if (jsCookie.get('user') && jsCookie.get('pass')) {
return login(response)
} else {
router.replace("/"); //未存储时跳转登录页面
}
} else {
//否则返回数据
return response;
}
// console.log(response.config)
// console.log(response.data.errno)
// 对响应数据做点什么
// 根据返回的状态码来做相对应的事情--10001 10006这个两个状态码需要做令牌刷新的功能
// 1.获取到登录的账户和密码
// 2.重新登录
// 3.把重新登录之后的token重新赋值给请求头(aysnc---await)
return response;
},
(error) => {
// 对响应错误做点什么
return Promise.reject(error);
}
);
async function login(response) {
let res = await instance({
method: "get",
params: {
_gp: "admin",
_mt: "login",
username: Base.decode(jsCookie.get('user')),
password: Base.decode(jsCookie.get('pass')),
verifyCode: "666666",
},
});
if (res.data.errmsg == "成功") {
//let seconds = 1200;
//let expires = new Date(new Date() * 1 + seconds * 1000); //因为单位是天,所以需要转
// jsCookie.set("AdminToken", res.data.data, { expires: expires });
jsCookie.set("AdminToken", res.data.data)
response.config.headers["AdminToken"] = res.data.data;
console.log(response.config)
return await axios(response.config); //返回改变后的配置
}
}
//最后导出
export default instance;
axios配置、请求拦截器和响应拦截器
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 首先安装axios: 然后创建一个文件夹apiConfig,request.js文件 在配置所有接口的文件,api...
- 一、 拦截器介绍 一般在使用axios时,会用到拦截器的功能,一般分为两种:请求拦截器、响应拦截器。 请求拦截器在...
- 1、请求拦截器 请求拦截器的作用是在请求发送前进行一些操作,例如在每个请求体里加上token,统一做了处理如果以后...