Как перенаправить на нужную страницу в Vue js, используя vue -router? - PullRequest
0 голосов
/ 05 апреля 2020

Это мой код для requiresAuth и requiresGuest

requiresAuth: пользователи, которые удовлетворяют этому, не могут go войти на страницу входа или страницу регистрации (мета для /)

requiresGuest: Пользователи, которые удовлетворяют этому, не могут go до / или любой другой странице, имеющей requiresAuth meta для /login и /signup

Эти 2 условия работают отлично для моего страница

Задача :

Step-1 Допустим, мне дали URL-адрес типа localhost:8000/api/createapi/.......

Step-2 Так что в настоящее время я не вошел в систему, я ввел выше URL, и он перенаправляет меня на страницу log in (что ожидается)

Step-3 Но когда я снова войду в систему, он перенаправит меня на / (что не идеально )

Что я хочу :

После Step-2 Когда я вхожу в систему, он должен автоматически перенаправить меня на localhost:8000/api/createapi/....... С тех пор был запрошенный URL в Step-1

router.beforeEach((to, from, next) => {    
// check for required auth guard
  if (to.matched.some(record => record.meta.requiresAuth)) {
    requiresAuthLogic(to, next, from)
  } else if (to.matched.some(record => record.meta.requiresGuest)) {
    requiresGuestLogic(to, next)
  } else {
    // Proceed to route
    next()
  }
})
function requiresAuthLogic (to:Route, next:Function) {
  // check if NOT logged in
  if (!isUserLoggedIn()) {
    // Go to login
    next({
      path: '/login',
      query: {
        redirect: to.fullPath
     }
    })
  } else if (isUserEmailVerified() === true) {
    // Proceed to route
    next()
  }
}

function requiresGuestLogic (to:Route, next:Function) {
  if (isUserLoggedIn() && isUserEmailVerified() === true) {
    next({
      path: '/',
      query: {
        redirect: to.fullPath
      }
    })
  } else {
    // Proceed to route
    next()
  }
}

1 Ответ

1 голос
/ 05 апреля 2020

Если я правильно понял, вам нужно использовать значение, которое передается через параметр перенаправления

Это должно быть сделано в вашей функции входа в систему, если вход выполнен успешно, вы не поделились своей функцией входа в систему но как то так:

loginUser() {
    this.$store.dispatch('loginUser', {
        email: this.email,
        password: this.password
    })
        .then(() => {
            this.$router.push(this.$route.query.redirect)
        })
    }
...