根据接口获取权限渲染菜单

    • 效果图
    • 先来看看后台返回数据格式
  • 1.处理后台返回数据
  • 2.整理权限 只保留权限名称放入数组
    • console.log(permissionList)
  • 3.根据router>index.js过滤接口获得的权限
  • 4.后台获取的权限数组与router>index.js里的路由进行对比看是否存在

效果图

先来看看后台返回数据格式

1.处理后台返回数据

getPermission(){//获取权限的方法getPermissoonList(state).then(res => {//getPermissoonList:接口  获取权限数组if(res.code === 200){let permissionList = mapPermission(res.data)//获取到perimission数组let accessedRouters = filterAsyncRouter(asyncRoutes, permissionList)//asyncRoutes为router>index.js路由router.addRoutes(accessedRouters)}})
}

2.整理权限 只保留权限名称放入数组

function mapPermission(permission) {let arr = []permission.forEach(i => {arr.push(i.permission)let _arr = []if (i.childList && i.childList.length) {//向下递归调用 查询到最内层数据 把所有permission字段拿到_arr = mapPermission(i.childList)}arr.push(..._arr)})return arr
}
console.log(permissionList)

3.根据router>index.js过滤接口获得的权限

function filterAsyncRouter(asyncRouterMap, permissionList) {let arr = asyncRouterMap.filter(router => {if (checkRouter(router,permissionList)) {if (router.children && router.children.length) {router.children = filterAsyncRouter(router.children,permissionList)//向下递归调用直到最内层}return true} else {return false}})return arr
}

4.后台获取的权限数组与router>index.js里的路由进行对比看是否存在

function checkRouter(router,permissionList) {if (permissionList.indexOf(router.name) != -1) { //后台获取的权限数组与router>index.js里的路由进行对比return true} else {return false}
}

用router.addRoutes把根据router内的路由过滤出的权限路由动态添加进去

vue动态路由 导航栏列表展示 权限管理相关推荐

  1. vue 通过路由导航守卫控制访问权限

    1.作用:防止用户跳过登录页面直接从url进入后台管理界面,控制访问权限. 2.实现代码 2.1在router/index.js中添加如下代码, const router = new VueRoute ...

  2. vue + elementui 实现动态侧边导航栏

    vue + elementui 实现动态侧边导航栏 引言 router 文件夹 创建 layout 文件夹 components 创建 SubMenu 文件夹封装动态侧边栏 vuex 中根据权限动态获 ...

  3. Vue - 路由导航守卫控制访问权限,设置 localStorage 过期时间

    Vue 路由导航守卫控制访问权限,设置 localStorage 过期时间 一. 路由导航守卫 二. 路由导航守卫 简单使用 三. 使用路由导航守卫设置 token 过期时间 导航守卫: https: ...

  4. vue路由导航守卫控制访问权限

    利用路由的全局前置守卫beforeEach来控制用户的访问权限. 首先是一个登录的页面 用户输入完整的信息,点击登录时,会本地存储用户的登录状态,如果在本地存储中存在用户登录过的痕迹,用户可以直接进入 ...

  5. ant design pro vue 动态路由 流程详解

    ant design pro vue 动态路由 流程详解 前言 流程图 流程1 src/permission.js 流程2 src/store/modules/user.js 流程3 src/perm ...

  6. uniapp动态设置导航栏和标题栏语言

    hbuilderx中uniapp动态设置导航栏和标题栏语言 一 .下载vue-i18n文件引入项目 hbuilder本身是带有能够运行nmp命令的终端,由于用不到全部文件,我采用的是在电脑cmd窗口下 ...

  7. Vue动态路由的前端实现

    1. 需求描述 最近开发的一个项目,涉及到这样一个需求:随着项目的不断推进,后台管理功能逐渐增多,与此同时,静态路由表也逐渐扩大,需要把静态路由方式转换为动态路由方式.要完成这样一个转换,有几个技术要 ...

  8. css制作动态按钮导航栏,巧妙使用checkbox制作纯css动态导航栏

    前提:很多时候.我们的网页都需要一个垂直的导航栏.可以分类.有分类.自然就有展开.关闭的功能.你还在使用jquery操作dom来制作吗?那你就out了! 方案:使用checkbox 的 checked ...

  9. vue+elementui左侧导航栏

    vue+elementui左侧导航栏踩坑 最近接触前端vue+elementui,记录一下 1. element官网这里:default-active="***"前面没有冒号,直接 ...

最新文章

  1. js 点击侧边栏展示内容_【DEMO】JS实现侧边栏信息展示效果
  2. 淘宝分布式框架Fourinone2.0正式版发布
  3. ThinkPhp学习13
  4. clockdiff-检测两台linux主机的时间差
  5. 求二维数组的转置矩阵
  6. c语言按照姓名查询员工信息,输入10个职工信息,按号码大小排序,再使用查找函数找职工的姓…...
  7. 计算字符串长度(英文占1个字符,中文汉字占2个字符)
  8. 三款MikroTik家用和小型办公网路由器
  9. c语言中数组怎么用乘法分配律,乘法分配律说课稿(5篇)(33页)-原创力文档
  10. linux目录和文件
  11. chrome浏览器调试时阻止图片的加载
  12. java18_【Java】Java_18 方法
  13. iptables屏蔽ip某个端口访问
  14. MongoDB——聚合管道之$project操作
  15. Python Pandas读取文件
  16. 动起来!好玩的CSS抖动样式 – CSS Shake
  17. P1244 [NOI2000] 青蛙过河题解
  18. 量子计算机拓扑超导新状态,美研制出奇特的拓扑超导体材料
  19. DsMall商城新增短信宝短信接口
  20. 2013年中国android智能手机用户调查研究报告,ZDC:2013年7月中国智能手机市场分析报告...

热门文章

  1. JDBC-SQLserver
  2. 如何把APP上传到各大应用市场与应用商店
  3. 网络端口扫描工具s.exe、sfind.exe以及superscan
  4. 虎牙“维稳”,斗鱼“自救”
  5. 三两行代码实现进程防杀,免驱动,IceSword,WSysCheck等无效.
  6. [Error]校赛/ACM初级纸质备战资料——刷题大总结
  7. 常用的Docker镜像
  8. mysql 存储过程 控制台_mysql 存储过程 调试
  9. Altium Designer发展历史
  10. 用R语言做自己的微信聊天记录词云