写在router/inde## 标题x.js文件中加粗样式*****斜体样式*
// 导航守卫
// 使用 router.beforeEach 注册一个全局前置守卫,判断用户是否登陆
router.beforeEach(async (to, from, next) => {
//拿到当前页面url,vue编译完成的页面会有'#/'
let url = window.location.href;
//例如http://c.baidu.com/mark?setId=64#/
if (url.split('?')[1] !== undefined) {
let cs = decodeURI(url.split('?')[1]); //?后面的参数字符串
console.log(url)
let cs_arr = cs.split('&'); //将参数字符串分割为包含多个参数的数组
cs = {}; //声明一个容器
for (let i = 0; i < cs_arr.length; i++) { //遍历数组
//将下标为0123的数组字符串,转化为 {key1:value1;key2:value2;} 格式的json
cs[cs_arr[i].split('=')[0]] = cs_arr[i].split('=')[1]
}
console.log("路劲:", cs)
if (cs.code !== undefined && cs.state === 'YOUR_PARM#/') {
//调用code换取token接口
let res = await api.codeExchangeToken({code: cs.code})
if (res.code === 0 && res.data !== null) {
console.log("code请求结果:", res);
await Util.localData('set', 'token', res.data.access_token);
await Util.localData('set', 'memberId', res.data.memberId);
//获取用户信息
let userInfo = await api.getUserInfo({access_token: res.data.access_token, loginId: res.data.resource_owner});
console.log("用户信息:", userInfo)
if (userInfo !== false) {
await Util.localData('set', 'userInfo', userInfo.data.result);
}
//重定向到回调地址
window.location = 'https:**********';
}
}
}
let token = await Util.localData('get', 'token');
if (to.path === '/') {
next();
} else {
// let token = store.state.token;
console.log("票:", token);
console.log("跳转页面信息:", next);
if (token === '') {
next('/')
} else {
next();
}
}
});