需求:vue项目需要路由跳转时判断该用户是否已登录,若登录则可以进入页面,若不登陆则跳转登录页

采用在router.beforeEach方法中查询后端接口根据返回字段来判断用户是否登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
router.beforeEach((to, from, next) => {
document.title = to.meta.title;
//会员融合权益进入限制
if (to.meta.type == 'cardBenefit') {
checkLogin().then(res => {
if(res.resCode === "000000") {
next();
} else {
next('/cardBenefitLogin'); // 跳转至登录页面
}
}).catch(e => {
next('/cardBenefitLogin');
});
}
});

但这样如果查询出错,会出现返回登录页面后一直请求一直返回的情况,无限循环,所以要将登录页进行额外处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
router.beforeEach((to, from, next) => {
document.title = to.meta.title;
//会员融合权益进入限制
if (to.meta.type == 'cardBenefit' && to.path != '/cardBenefitLogin') {
checkLogin().then(res => {
if(res.resCode === "000000") {
next();
} else {
next('/cardBenefitLogin'); // 跳转至登录页面
}
}).catch(e => {
next('/cardBenefitLogin');
});
}else if(to.meta.type == 'cardBenefit' && to.path == '/cardBenefitLogin'){
next();
}
});