vue菜单权限

菜单权限控制 ---> 不同权限的用户可访问的页面是不同的 可访问的页面--->路由

路由一般分为 常量路由(所有人都可以访问),动态路由(通过权限控制的路由),任意路由(当访问的路由不存在时,跳转到的页面)

步骤一

  1. 拆分路由,拆为常量路由,异步路由和任意路由

步骤二

1.获取用户信息成功后后台所返回的动态路由

  1. 将异步路由和后台所返回的路由进行比对,过滤,封装成一个函数,
javascript 复制代码
// 用于过滤当前用户需要展示的异步路由
function filterAsyncRoute(asyncRoute: any, routes: any) {
  return asyncRoute.filter((item: any) => {
    // 判断路由表中是否包含异步路由
    if (routes.includes(item.name)) {
      // 判断是否有子路由
      if (item.children && item.children.length > 0) {
        // 递归子路由
        item.children = filterAsyncRoute(item.children, routes);
      }
      return true;
    }
  });
}
  1. 在获取用户信息处调用该函数,并注册新的路由表
javascript 复制代码
 // 获取用户信息
     userInfo() {
      let res = await reUserInfo();
      // console.log(res.data);
      if (res.code == 200) {
        this.username = res.data.name;
        this.avatar = res.data.avatar;
        this.buttons = res.data.buttons;
        // 调用异步路由,计算当前路由所需要的异步路由
        let UserRoute = filterAsyncRoute(
          cloneDeep(asyncRoute),
          res.data.routes
        );
        // 生成新的路由表
        this.menuRoutes = [...contanceRoute, ...UserRoute, anyRoute];
        // 注册路由
        [...UserRoute, anyRoute].forEach((route) => {
          router.addRoute(route);
        });
        //打印当前的全部路由
        // console.log(router.getRoutes());
        return "ok";
      } else {
        return Promise.reject(new Error(res.data.message));
      }
    },

以上即可实现菜单的权限控制

相关推荐
猫32816 分钟前
echarts 日常问题解决
前端·javascript·echarts
不简说1 小时前
JS 代码技巧 vol.8 — 20 个函数式编程实战,把 if/else 拍扁的骚操作
前端·javascript·面试
Cobyte2 小时前
模板 DSL 解析器中的状态机设计
前端·javascript·vue.js
软件开发技术深度爱好者3 小时前
小学英语单词魔法学园HTML5实现
javascript·html5·英语学习
勉灬之3 小时前
Next.js + Prisma 跨平台部署踩坑记
开发语言·javascript·ecmascript
糖果店的幽灵3 小时前
langgraph分支之 - 动态分支(Dynamic Branch)
java·前端·javascript·人工智能·langgraph
Bad_Shepherd3 小时前
vue-element-plus-admin添加自定义svg图标,并且图标选择组件可选自定义图标
vue.js·elementui·前端框架
这是个栗子3 小时前
前端开发中的常用工具函数(九)
开发语言·javascript·ecmascript·at
Revolution615 小时前
一段 JavaScript 代码执行时,到底发生了什么
前端·javascript
会周易的程序员6 小时前
Mermaid Renderer:一款的图表可视化小工具
前端·vue.js·流程图·mermaid