vue.js - Vue:限制具有某些角色的用户可以访问路由器 vue-element-admin 中的某些页面
问题描述
我正在使用可以在这里看到的 vue-admin-template:https ://github.com/PanJiaChen/vue-admin-template 。
我有一个基于权限的系统,允许您根据用户的角色限制用户的访问权限。我可以通过在页面中添加以下代码来限制用户看到的内容:
<template>
<div v-permission="['admin']">
<h1>You are the admin</h1>
</div>
</template>
<script>
import permission from '@/directive/permission/index.js'
export default {
name: 'ThePage',
directives: { permission },
vue-admin-template 有一个路由器系统,它在侧面菜单中列出了您可以访问的所有页面,如下所示:
export const constantRoutes = [
{
path: '/test1',
component: Layout,
redirect: '/',
name: 'Test',
alwaysShow: false,
hidden: true,
meta: { roles: ['admin'], title: 'Test', icon: 'example' },
children: [
{
path: 'inside',
props: true,
name: 'Inside',
component: () => import('@/views/test/index'),
meta: { title: 'Inside', icon: 'peoples' },
hidden: true
}
]
}
}
不幸的是,如果用户没有管理员卷,他/她仍然可以看到访问此页面。
解决方案
我不清楚,但可以将路线添加到 2 个 const 区域:
常量路由和异步路由
如果您想使用用户角色来确定他们可以看到什么,您的条目必须在asyncRoutes
export const asyncRoutes = [
{
path: '/test1',
component: Layout,
redirect: '/',
name: 'Test',
alwaysShow: false,
hidden: true,
meta: { roles: ['admin'], title: 'Test', icon: 'example' },
children: [
{
path: 'inside',
props: true,
name: 'Inside',
component: () => import('@/views/test/index'),
meta: { title: 'Inside', icon: 'peoples' },
hidden: true
}
]
}
}```
推荐阅读
- maven - maven-release-plugin 先前版本的文档在哪里?我正在寻找版本 2.8.2
- django - 如何在 Django 中为 Laravel 多态相关数据建立 ContentType 关系?
- vba - 如何使用 VBA Selenium 单击复选框跨度类
- c - 使用 OpenMP 执行并行代码比执行串行代码需要更多时间
- google-cloud-dataflow - TFX Evaluator 不在 Dataflow 中运行,因此由于 pod 内存不足而失败
- python - 你如何让棋盘功能在 spyder 3.7 上工作?
- unity3d - 用于 Unity 的 xUnit 测试
- html - 以透明 png 精灵为背景图像的列表单击故障
- javascript - 如何在 Vue.js 中在两个不同的条件下绑定两个类?
- python - 使用 Flask Jinja2 模板将 JSON 数据发布到基于日期的表中