Маршруты внешней навигации защищают vue

#javascript #vue.js

#javascript #vue.js

Вопрос:

У меня есть приложение в vue с маршрутизатором vue, которое работает правильно, также в маршрутизаторе я использую навигационные ограждения для защиты своих маршрутов, проблема в том, что теперь я хочу иметь маршруты или компоненты, которые работают вне навигационных ограждений, например страницу восстановления пароля, на которую пользователь получает ссылку и можетдоступ к нему напрямую, моя проблема в том, что я хочу получить доступ к паролю восстановления напрямую по внешней ссылке, он всегда перенаправляет меня на логин, я делюсь своим кодом:

 Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'home',
    component: Home,
    meta: {
      user_type: 1
    }
  },
  {
    path: '/check-balance',
    name: 'check-balance',
    component: CheckBalanceComponent,
    meta: {
      user_type: 1
    }
  },
  {
    path: '/check-payment',
    name: 'check-payment',
    component: CheckPaymentsComponent,
    meta: {
      user_type: 1
    }
  },
  {
    path: '/payment-disabled',
    name: 'payment-disabled',
    component: DisabledMakePaymentComponent,
    meta: {
      user_type: 1
    }
  },
  {
    path: '/handle-payment',
    name: 'handle-payment',
    component: HandlePaymentsComponent,
    meta: {
      user_type: 1
    }
  },
  {
    path: '/handle-report',
    name: 'handle-report',
    component: HandleReportsComponent,
    meta: {
      user_type: 1
    }
  },
  {
    path: '/user-profile',
    name: 'user-profile',
    component: UserProfileComponent,
    meta: {
      user_type: 1
    }
  }, 
  {
    path: '/recover-password', 
    name: 'recover-password',
    component: RecoverPasswordComponent,    
    meta: {
      free: 1 //this outside navigation guards
    }
  },
  {
    path: '/recover-link', 
    name: 'recover-link',
    component: RecoverLinkComponent,
    meta: {
      free: 1
    }
  },
  {
    path: '/login',
    name: 'login',
    component: LoginComponent,
    meta: {
      free: 1
    }
  },
  
  {
    path: '/help',
    name: 'help',
    component: HelpComponent,
    meta: {
      user_type: 1
    }
  }
]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

router.beforeEach((to, from, next) => {
  if(to.matched.some(record => record.meta.free)){
    next()
  } 
  
  else if(store.state.user amp;amp; store.state.user.user_type == 1){
    next()
  }

  else {
    next({
      name: 'login'
    })
  }
})

export default router  

Комментарии:

1. Можете ли вы показать путь к ссылке, которую вы пытаетесь использовать?

2. localhost:59876/api/Users/ восстановление пароля

3. Похоже, что это путь api, а не интерфейсный маршрут. Если это так, это указывает на то, что ваш сервер перенаправляет четный трафик каталога / api в приложение, что неверно. Вам нужно настроить сервер, чтобы он этого не делал. Для получения помощи в этом вам нужно будет опубликовать сведения о том, какой сервер вы используете и как настроено перенаправление