token失效需要跳轉到匯聚平臺登錄頁面,而生產環境和測試環境路徑不同,所以通過定義global_variable.js全局變量,賦予不同的環境不同路徑
global_variable.js
let relogin_baseUrl=''
switch (window.location.hostname) {
case '172.16.72.108'://線上環境 172.16.72.108
relogin_baseUrl='http://172.16.75.200:81/#/login'
break;
default://測試環境 10.12.31.188
relogin_baseUrl='http://www.xaadmin.com/#/login'
break;
}
console.log(relogin_baseUrl)
export default{
relogin_baseUrl
}
main.js
import global_variable from './global_variable.js'
vue.prototype.global_variable = global_variable
調用
window.location.href=this.global_variable.relogin_baseUrl
當token失效前往正確的登錄頁之後,點擊瀏覽器回退頁面會報錯Cannot read property ‘relogin_baseUrl’ of undefined,解決辦法是在router,error鉤子裏面去判斷是這個message,就是重定向到登錄頁之後回退到上一頁沒找到對應的變量,我們就把此路徑再次重定向到登錄頁(效果就是token失效或者退出登錄前往的是鄙別的系統的登錄頁,而返回上一頁就相當於沒有登陸狀態任然要繼續前往別人的登錄頁面)
router.onError((error) => {
const pattern = /Loading chunk (\d)+ failed/g;
const isChunkLoadFailed = error.message.match(pattern);
console.log(error)
if (isChunkLoadFailed) {
console.log(isChunkLoadFailed,'/Loading chunk (\d)+ failed/g','路由懶加載找不到對應的moudle')
window.location.reload();
}else{
if(error.message === "Cannot read property 'relogin_baseUrl' of undefined"){//判斷是否是token失效重新登錄後點擊回退按鈕報錯沒找到對應moudle
switch (window.location.hostname) {
case '172.16.72.108'://線上環境 172.16.72.108
window.location.href='http://172.16.75.200:81/#/login'
break;
default://測試環境 10.12.31.188
window.location.href='http://www.xaadmin.com/#/login'
break;
}
}else{
console.log(error)
}
}
});