需求: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(); } });
|