需求:vue项目需要路由跳转时判断该用户是否已登录,若登录则可以进入页面,若不登陆则跳转登录页
采用在router.beforeEach方法中查询后端接口根据返回字段来判断用户是否登录
| 12
 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');
 });
 }
 });
 
 | 
但这样如果查询出错,会出现返回登录页面后一直请求一直返回的情况,无限循环,所以要将登录页进行额外处理
| 12
 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();
 }
 });
 
 |