vue-router beforeEach出现死循环


vue router 在beforeEach处理登录出现问题

有问题代码如下:

router.beforeEach((to, from, next) => {
  
  let token = localStorage.getItem('token')
  if(token){
    next()
  }else{
    if(to.fullPath == '/'){
      next()
    } else{
      next({ path: '/login' })
      //next()
    }
  }

})

当未获取到token时候,需要进入到login页面,此时会一直出现死循环,报错如下

 原因:因为进入login页面时候,/login又会进入beforeEach里面,这样就造成了死循环

  解决方式如下:

let token = localStorage.getItem('token')
  if(token){
    next()
  }else{
    if(to.fullPath == '/'){
      next()
    } else if (to.fullPath == '/login'){
      next()
    }else{
      next({ path: '/login' })
      //next()
    }
  }