借助Vue导航卫士防止刷新时更改路线

时间:2020-08-19 10:31:32

标签: vue.js vue-router

我有一个基于userTp值的导航卫士,它们可以正常工作,但是,每当用户重新加载页面时,它就会将其重定向到name: 'login'

我想防止刷新时更改路由。有没有在导航卫士内执行此操作的简单方法?

router.beforeEach(async (to, from, next) => {
  if (to.meta.requireAuth) {
    if (!store.state.auth.user) {
      await store.dispatch(AUTH_REFRESH)
    }
    if (to.meta.userTp === store.state.auth.user.userTp) {
      next()
      window.scrollTo(0, 0)
    } else {
      next({ name: 'login' })
      window.scrollTo(0, 0)
    }
  } else {
    next()
    window.scrollTo(0, 0)
  }
})

编辑:

我为此找到了一种半解决方法,但这并不完美。它允许用户在知道正确的页面URL路径的情况下访问页面,但是由于我的设置在发送数据之前进行了服务器端userTp检查,因此它仅显示页面模板,但其中没有任何数据。

我的临时解决方案: (添加为第一个if语句)

router.beforeEach(async (to, from, next) => {
      if (to = from) {
        if (!store.state.auth.user) {
          await store.dispatch(AUTH_REFRESH)
          to()
        }
      }

0 个答案:

没有答案