首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue路由器从路由器链路访问元数据

Vue路由器从路由器链路访问元数据
EN

Stack Overflow用户
提问于 2021-01-02 04:14:55
回答 1查看 281关注 0票数 0

我使用vue3vue-router-4,并试图对未经授权的用户隐藏一些路由器链接:

路由文件:

代码语言:javascript
复制
{
  path: "/users/create",
  name: "UserCreate",
  meta: {
    title: "Create user",
    requiresAuth: true
  },
  component: () =>
    import(/* webpackChunkName: "create" */ "@/views/Users/Create.vue")
}

正如您所看到的,我在此路径中有requiresAuth: true元,所以我想为来宾隐藏它。

我想在我的视图中使用类似这样的东西(v-if部件,它不工作):

代码语言:javascript
复制
<router-link v-if="route.meta.requiresAuth === isLoggedIn()" to="/users/create" class="nav-link"
      >Create user</router-link>

请告诉我如何才能做到这一点,如果这是不可能的meta fields -什么是首选的方式隐藏链接。

附言。当然,所有的验证和访问检查将在后端执行,但我仍然不想显示他们不能查看的用户链接。

EN

回答 1

Stack Overflow用户

发布于 2021-01-02 04:38:35

请记住,这只会隐藏链接,用户仍然可以通过URL访问这些路由。除了隐藏链接之外,您还需要使用before导航保护:

导航守卫:

代码语言:javascript
复制
//router.js

router.beforeEach((to,from,next)=>{
   if ( to.matched.some(record => record.meta.requiresAuth) {
     if( isLoggedIn()) {
        next()
     }  else {
       // if user is not logged what should happen
    }
   } else {
     next()
   }
})

如果链接需要身份验证且用户未通过身份验证,则隐藏链接:

代码语言:javascript
复制
<router-link v-if="isLoggedIn()" to="/users/create" class="nav-link"> 
  Create user
</router-link>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65533329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档