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));
      }
    },

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

相关推荐
涵信6 分钟前
第十节:性能优化高频题-虚拟DOM与Diff算法优化
javascript·vue.js·性能优化
拖孩13 分钟前
【Nova UI】十一、组件库中 Icon 组件的测试、使用与全局注册全攻略
前端·javascript·vue.js·ui·sass
天天扭码1 小时前
深入解析 JavaScript 中的每一类函数:从语法到对比,全面掌握适用场景
前端·javascript·面试
凉豆菌2 小时前
在html中如何创建vue自定义组件(以自定义文件上传组件为例,vue2+elementUI)
vue.js·elementui·html
广西千灵通网络科技有限公司2 小时前
基于 springboot+vue+elementui 的办公自动化系统设计(
vue.js·spring boot·elementui
北上ing2 小时前
同一页面下动态加载内容的两种方式:AJAX与iframe
前端·javascript·ajax
纪元A梦2 小时前
华为OD机试真题——推荐多样性(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
java·javascript·c++·python·华为od·go·华为od机试题
小墨宝3 小时前
js 生成pdf 并上传文件
前端·javascript·pdf
www_pp_4 小时前
# 构建词汇表:自然语言处理中的关键步骤
前端·javascript·自然语言处理·easyui
YuShiYue4 小时前
pnpm monoreop 打包时 node_modules 内部包 typescript 不能推导出类型报错
javascript·vue.js·typescript·pnpm