导航守卫在每个无限循环之前

时间:2017-12-04 09:46:39

标签: vue.js vue-router

尝试使用导航防护,但next('/auth/login')提供无限循环:

router.beforeEach((to, from, next) => {
  auth.validate().then((valid) => {
    if (!valid) {
      next('/auth/login')
    } else {
      next()
    }
  })
})

路由器定义:

const router = new Router({
  routes: [
    {
      name: 'login',
      path: '/auth/login',
      component: login
    }
})

1 个答案:

答案 0 :(得分:1)

在我看来,当您的身份验证无效时,您的路由器会将您发送到/auth/login并在该页面上再次发送。我在我的应用程序中处理的方式不同,但是使用您的代码,您可以使用路由中的from对象添加一种方法来检查页面的来源。

您需要检查当前路由是/auth/login然后忽略不重定向。

示例:

 if (!valid && from.path !== '/auth/login') {}

这不会重定向回/ auth / login,因为您来自该页面。