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) } } });