Vue导航守卫无法跳转

1.需求:
登录有两重(商户登录页,用户登录页):
-1- 先登录商户
-2- 登录商户成功之后,再登录用户
-3- 商户第一次登录之后以后就不需要再登录了,直接跳转到用户页面用户登录

2.已有代码
商户第一次登录,请求http,成功之后,保存值到vuex里面

 this.axios.post('/api/user/login.do', qs.stringify({
          username: this.username,
          password: this.password,
          type: 'pos_seller'
        })).then(response => {
          if (response.data.result === 'success') {
               // this.$router.push('/login')
              let user = {};
              user.user_name = response.data.user.displayName;
              user.user_token = response.data.user.userId;
              this.setUser(user);//发送给vuex
          }
        }).catch(error => {
          console.log("error====>" + error)
        })

router里面:

router.beforeEach((to, from, next) => {
  // console.log(store.state.currentUser.UserToken); // 有值
  if (to.meta.requireAuth) {
    let token = store.state.currentUser.UserToken;
    if (token) {
      if (to.path === '/login') {
        console.log(to)
        next('/login')
      }
    }
    else {
      next({
        path: '/sellerlogin',
        query: {redirect: to.fullPath}
      })
    }
  }
  else {
    next();
  }
})

3.结果:
点击商户登录,直接死循环,并且也不能达到预期效果(localStorage里面有值,自动跳转到用户登录页)

4.问题
-1- 上面的代码有啥问题
-2- 一般登录拦截是这样做的吗?我看到网上说还需要axios拦截,也就是说前端路由拦截+axios拦截?

阅读 3.6k
1 个回答

axios有请求前拦截,和请求后拦截,对应着不同的拦截器,可以在任何请求前去判断是否登录,然后决定跳转页面。请求后拦截,用于对常规数据过滤,通用跳转、根据不同的状态码可及对应的业务场景,设置各种用法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题