【问题标题】:Navigation Guards beforeEach infinite loopNavigation Guards beforeEach 无限循环
【发布时间】:2017-12-04 09:46:38
【问题描述】:

尝试使用导航守卫,但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
    }
})

【问题讨论】:

标签: vue.js vue-router


【解决方案1】:

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

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

示例:

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

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

【讨论】:

  • 你给我一个主意,但我想应该是 to.path !== '/auth/login'?
  • 是的,那也可能更好
猜你喜欢
  • 2019-09-10
  • 2020-09-30
  • 1970-01-01
  • 2023-02-10
  • 2018-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
相关资源
最近更新 更多