前端根据权限生成三级路由

2024-06-14 10:36

本文主要是介绍前端根据权限生成三级路由,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

三级菜单和后端返回数组对比获取有权限的路由
数组:

//后端返回的数组
const arr1 = ['sale.management', 'sale.order', 'sale.detail'];
//前端路由
const arr2 = [{path: "/sale-manage",redirect: "/sale-manage/sale-order/sale-list",name: 'saleManage',component: 'Layout',meta: {title_zh: '销售管理',icon: 'i_dingdanguanli',auth: ['sale.management'],},children: [{path: "sale-order",redirect: "/sale-manage/sale-order/sale-list",name: "saleOrder",meta: {title_zh: '销售订单',auth: ['sale.order'],},children: [{path: "sale-list",name: "saleList",component: () => import("../views/saleList/sale-list.vue"),meta: {title_zh: '销售订单',auth: ['sale.list'],},},{path: "sale-detail",name: "saleDetail",component: () => import("../views/saleList/sale-detail.vue"),hidden: true,meta: {title_zh: '销售订单详情',auth: ['sale.detail'],},},{path: "purchasing-agent-list",name: "purchasingAgentList",component: () => import("../views/saleList/11.vue"),meta: {title_zh: '111',auth: ['11.list'],},},{path: "purchasing-agent-detail",name: "purchasingAgentDetail",component: () => import("../views/saleList/11detail.vue"),hidden: true,meta: {title_zh: '11详情',auth: ['11.detail'],},},],},]},
];
// 筛选有权限的路由
function filterItems(items, authArr) {const filteredItems = items.filter((item) => {if (!item.hidden) {const auth = item.meta && item.meta.auth && item.meta.auth[0]return authArr.includes(auth);}});if (filteredItems.length === 0) {return [];}filteredItems.forEach((item) => {if (item.children && item.children.length > 0) {item.children = filterItems(item.children, authArr);}});return filteredItems;
}class authRoutes {constructor(routesList, authArr) {this.routesList = routesListthis.authArrFilter = authArrthis.routesAuthArr = []}filterRoutesArray(routesList, authArr) {this.authArrFilter = authArr.map((item) => item.path)this.routesAuthArr = filterItems(routesList, this.authArrFilter)}
}export default authRoutes

使用:

const authRoutesObj = new authRoutes(arr1 , arr2 )
authRoutesObj.filterRoutesArray(routes, res)
console.log(authRoutesObj.routesAuthArr)

这篇关于前端根据权限生成三级路由的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1060165

相关文章

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

SpringBoot+Vue3整合SSE实现实时消息推送功能

《SpringBoot+Vue3整合SSE实现实时消息推送功能》在日常开发中,我们经常需要实现实时消息推送的功能,这篇文章将基于SpringBoot和Vue3来简单实现一个入门级的例子,下面小编就和大... 目录前言先大概介绍下SSE后端实现(SpringBoot)前端实现(vue3)1. 数据类型定义2.

SpringBoot集成iText快速生成PDF教程

《SpringBoot集成iText快速生成PDF教程》本文介绍了如何在SpringBoot项目中集成iText9.4.0生成PDF文档,包括新特性的介绍、环境准备、Service层实现、Contro... 目录SpringBoot集成iText 9.4.0生成PDF一、iText 9新特性与架构变革二、环

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

idea-java序列化serialversionUID自动生成方式

《idea-java序列化serialversionUID自动生成方式》Java的Serializable接口用于实现对象的序列化和反序列化,通过将对象转换为字节流来存储或传输,实现Serializa... 目录简介实现序列化serialVersionUID配置使用总结简介Java.io.Seripyth

kingbase修改权限实现方式

《kingbase修改权限实现方式》该文章详细介绍了如何在数据库中创建用户并赋予其相应的权限,包括创建用户、回收默认权限、创建数据库、赋权数据库权限、创建只读用户以及回收权限等步骤... 目录前言使用步骤总结前言创建用户后对数据库对象的读写权限进行修改使用步骤1、创建用户create user cs

Java中的随机数生成案例从范围字符串到动态区间应用

《Java中的随机数生成案例从范围字符串到动态区间应用》本文介绍了在Java中生成随机数的多种方法,并通过两个案例解析如何根据业务需求生成特定范围的随机数,本文通过两个实际案例详细介绍如何在java中... 目录Java中的随机数生成:从范围字符串到动态区间应用引言目录1. Java中的随机数生成基础基本随

C#自动化生成PowerPoint(PPT)演示文稿

《C#自动化生成PowerPoint(PPT)演示文稿》在当今快节奏的商业环境中,演示文稿是信息传递和沟通的关键工具,下面我们就深入探讨如何利用C#和Spire.Presentationfor.NET... 目录环境准备与Spire.Presentation安装核心操作:添加与编辑幻灯片元素添加幻灯片文本操