我使用vue3和vue-router-4,并试图对未经授权的用户隐藏一些路由器链接:
路由文件:
{
path: "/users/create",
name: "UserCreate",
meta: {
title: "Create user",
requiresAuth: true
},
component: () =>
import(/* webpackChunkName: "create" */ "@/views/Users/Create.vue")
}正如您所看到的,我在此路径中有requiresAuth: true元,所以我想为来宾隐藏它。
我想在我的视图中使用类似这样的东西(v-if部件,它不工作):
<router-link v-if="route.meta.requiresAuth === isLoggedIn()" to="/users/create" class="nav-link"
>Create user</router-link>请告诉我如何才能做到这一点,如果这是不可能的meta fields -什么是首选的方式隐藏链接。
附言。当然,所有的验证和访问检查将在后端执行,但我仍然不想显示他们不能查看的用户链接。
发布于 2021-01-02 04:38:35
请记住,这只会隐藏链接,用户仍然可以通过URL访问这些路由。除了隐藏链接之外,您还需要使用before导航保护:
导航守卫:
//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()
}
})如果链接需要身份验证且用户未通过身份验证,则隐藏链接:
<router-link v-if="isLoggedIn()" to="/users/create" class="nav-link">
Create user
</router-link>https://stackoverflow.com/questions/65533329
复制相似问题