//1.新建axios實(shí)例
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//請(qǐng)求超時(shí)
});
// 2.攔截器的配置
// 2.1 請(qǐng)求攔截
// 請(qǐng)求攔截器
instance.interceptors.request.use((config) => {
config.headers['AdminToken'] = jsCookie.get('AdminToken')
return config
}, function (error) {
return Promise.reject(error)
})
// // 2.2 響應(yīng)攔截
// // 添加響應(yīng)攔截器---無(wú)限刷新令牌,無(wú)痛刷新,令牌刷新
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("/"); //未存儲(chǔ)時(shí)跳轉(zhuǎn)登錄頁(yè)面
}
} else {
//否則返回?cái)?shù)據(jù)
return response;
}
// console.log(response.config)
// console.log(response.data.errno)
// 對(duì)響應(yīng)數(shù)據(jù)做點(diǎn)什么
// 根據(jù)返回的狀態(tài)碼來(lái)做相對(duì)應(yīng)的事情--10001 10006這個(gè)兩個(gè)狀態(tài)碼需要做令牌刷新的功能
// 1.獲取到登錄的賬戶和密碼
// 2.重新登錄
// 3.把重新登錄之后的token重新賦值給請(qǐng)求頭(aysnc---await)
return response;
},
(error) => {
// 對(duì)響應(yīng)錯(cuò)誤做點(diǎn)什么
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); //因?yàn)閱挝皇翘欤孕枰D(zhuǎn)
// 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); //返回改變后的配置
}
}
//最后導(dǎo)出
export default instance;
axios配置、請(qǐng)求攔截器和響應(yīng)攔截器
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 首先安裝axios: 然后創(chuàng)建一個(gè)文件夾apiConfig,request.js文件 在配置所有接口的文件,api...
- 一、 攔截器介紹 一般在使用axios時(shí),會(huì)用到攔截器的功能,一般分為兩種:請(qǐng)求攔截器、響應(yīng)攔截器。 請(qǐng)求攔截器在...
- 1、請(qǐng)求攔截器 請(qǐng)求攔截器的作用是在請(qǐng)求發(fā)送前進(jìn)行一些操作,例如在每個(gè)請(qǐng)求體里加上token,統(tǒng)一做了處理如果以后...
- 第八章 教學(xué)評(píng)價(jià) 第一節(jié) 從考試文化走向評(píng)價(jià)文化 一、教學(xué)評(píng)價(jià)的早期發(fā)展 (一)傳統(tǒng)考試階段 ★《學(xué)記》——我國(guó)最...