vue.js - 用户使用 token 身份验证登录后如何隐藏登录路由导航元素?

标签 vue.js vuejs2 vue-router

登录时,我使用 localStorage.setItem('token', token); 将 token 保存在本地存储中但现在我想隐藏导致登录和注册路线的导航元素。这些是我的路线:

<template>
    <div class="nav-header">
        <div class="wrapper">
            <ul class='nav-ul'>
                <router-link to="/" tag='li' active-class='active' exact><li><a>Home</a></li></router-link>
                <router-link to="/signup" tag='li' active-class='active' exact><li><a>Sign Up</a></li></router-link>
                <router-link to="/signin" tag='li' active-class='active' exact><li><a>Sign In</a></li></router-link>
            </ul>
        </div>
    </div>
</template>

我认为我需要检查本地存储中是否有存储的 token ,如果有则隐藏路由。

最佳答案

您可以在组件中定义一个计算属性,例如isLoggedIn,它返回一个boolean值。

computed: {
  isLoggedIn() {
    return !!window.localStorage.getItem('token')
  }
}

然后,您可以在要隐藏的路由中使用 v-if 指令。

<template>
    <div class="nav-header">
        <div class="wrapper">
            <ul class='nav-ul'>
                <router-link to="/" tag='li' active-class='active' exact><li><a>Home</a></li></router-link>
                <router-link to="/signup" v-if="!isLoggedIn" tag='li' active-class='active' exact><li><a>Sign Up</a></li></router-link>
                <router-link to="/signin" v-if="!isLoggedIn" tag='li' active-class='active' exact><li><a>Sign In</a></li></router-link>
            </ul>
        </div>
    </div>
</template>

关于vue.js - 用户使用 token 身份验证登录后如何隐藏登录路由导航元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54114186/

相关文章:

javascript - 我如何让 Vue Router beforeLeave 开火?

javascript - 如何访问在较低(父)级别声明的 Vue 对象的属性?

javascript - 如何在 Vue 3 中使用路由器 View 制作某些组件 "keep-alive"?

javascript - Select2 以 Vue Js 作为指令

javascript - vue找不到vuetify v-img元素的动态源

html - 使 div 和最大的 div 一样大

javascript - Vue router-link 精确激活类

javascript - Vuejs 挂载组件失败 : template or render function not defined

javascript - VueJS 输入与嵌套数据的绑定(bind)

javascript - Vue.js - 更新路由器 View