javascript - 获取以前的 URL 以用于重定向

标签 javascript vue.js vuejs2 vuex vue-router

我有一条路线。如果用户未登录,则会将其重定向到登录页面。我正在尝试获取用户来自的路线,以便在他们登录后我可以将他们重定向回来。

这是我的路线:

{
  path: '/builder/:pin?',
  name: 'Builder',
  component: Builder,
  props: true,
  meta: {
    requiresAuth: true, roles: ['XXXX', 'XXXX', 'XXXX']
  }
}

router.beforeEach((to, from, next) => {
  // check to see if router requires auth
  if (to.meta.requiresAuth) {
    let user = store.getters.getUser
    firebase.auth().onAuthStateChanged((user) => {
      if (user) {
        if(!user.emailVerified) {
          next({ name: 'Login' })
          store.dispatch('setLoginFeedback', {code: 'resubmit-verification', message: 'Your email is not verified'})
          return
        }
        // get current user
        let ref = db.collection('users').where('email', '==', user.email)
        ref.get().then(snapshot => {
          if (!snapshot.empty) {
            snapshot.forEach(doc => {
              this.user = doc.data()
              // if no roles are set
              if(!to.meta.roles) {
                next()
              } else if(to.meta.roles) {
                const hasRole = this.user.roles.find(val => to.meta.roles.includes(val))
                if (hasRole) {
                  next()
                } else {
                  alert('you do not have permission to enter')
                }
              } else {
                // next({ name: 'Dashboard' })
              }

            })
          } else {
            // no user
            // if (!this.user) {
              next({ name: 'Login' })
            // }
          }
        })
      } else {
        next({ name: 'Login' })
      }
    })
  } else {
    // console.log('does not require auth')
    next()
  }


})

在我的登录组件中,我有以下代码:

beforeRouteEnter(to, from, next) {
    next((vm) => {
        vm.prevRoute = from;
    });
    console.log(to, from, next)
},

我目前在本地服务器上。当我转到 localhost:8080/builder 时,它会将我正确重定向到登录,但在控制台中。我从发件人那里得到这个

{name: null, meta: {}, path: "/", hash: "", query: {}, …}

为什么我没有在路径中找到 /builder

最佳答案

你可以这样做..

this.$router.back();

这将带您返回之前的路线

程序化导航| Vue 路由器 https://router.vuejs.org/guide/essentials/navigation.html

关于javascript - 获取以前的 URL 以用于重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57720081/

相关文章:

javascript - 动态添加html select另一个选择框选项的onClick

javascript - Vue 哪里导入组件?

javascript - 如何打开和关闭 Vuetify Carousel 组件的右/左箭头

vue.js - Vue - 如何在模板中限定变量的范围

javascript - Vue - 如何从复选框事件获取当前实例?

php - this.$set() 在 vue2.0 和 laravel 中不工作

vue.js - 如果路由元数据键设置为 true,则 Vue 将组件渲染为特定路由中的模态

javascript - 在类方法与函数中使用扩展运算符

javascript - 单击更改元素的背景图像

javascript - 使用 Angular 的 $http 通过 GET 请求将对象数组发送到 Java Spring