Vue Router 仅从特定页面访问路由

时间:2021-02-18 15:08:34

标签: javascript vue.js vuejs2 vuex vue-router

在用户第一次登录后,我将他重定向到 CreateProfile 页面,他在其中输入了所有个人资料信息。之后,我想让该站点无法再访问,例如,如果用户在浏览器中键入 URL(例如 www.myproject.com/createProfile)。

如何确保只有来自我的登录页面的重定向才能访问 CreateProfile 页面?也就是说,如果用户手动输入 URL,他将被重定向,例如到 404 页面。

目前我的 CreateProfile 路线如下:

{
  path: '/createprofile',
  name: 'CreateProfile',
  component: CreateProfile,
  beforeEnter: (to, from, next) => {
    if (store.getters.getUserStatus == true) {
      next()
    } else {
      next({ name: 'Login' })
    }
  }
}

谢谢!!

1 个答案:

答案 0 :(得分:1)

您可以检查 from 导航守卫中的 beforeEnter 路线对象来测试之前的路线位置。

例如,检查 from.name 属性是否为 Login,当您需要重定向时,它只会是 true。 (假设您还没有提供来自 <router-link>Login):

beforeEnter: (to, from, next) => {
  const isRedirected = from.name === 'Login';
  if (isRedirected && store.getters.getUserStatus == true) {
    next()
  } else {
    next({ name: 'Login' })
  }
}