流浪のwolf

卷帝

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

在 vuex 中建立一个 permission.js 文件用于合并静态和动态的路由规则

结果会获取完整的用户的路由规则

复制代码
// 新建一个vuex模块来专门处理权限相关操作
import { constantRoutes, asyncRoutes } from "@/router";

export default {
  namespaced: true,
  state() {
    return {
      // 准备routes是静态路由和动态路由合并之后的内容(提供给侧边栏去渲染)
      routes: constantRoutes,
    };
  },
  getters: {},
  mutations: {
    setRoutes(state, data) {
      // data就是整理好的当前用户的动态路由映射数组  菜单显示
      state.routes = [...constantRoutes, ...data];
    },
  },
  actions: {
    // 用来整理出属于当前用户的动态路由映射数组
    filterRoutes(context, data) {
      // data是当前用户的权限点标识
      // asyncRoutes 是完整的动态路由映射数组
      // 思路:遍历每个动态路由映射是否在当前用户的页面权限标识中
      // 如果在就说明拥有改页面访问权限,返回这个路由映射
      let userAsyncRoutes = asyncRoutes.filter((item) => {
        return data.includes(item.name);
      });
      // 当前用户的动态路由
      // console.log(userAsyncRoutes);
      // 赋给state里面的routes,形成完整的静态+动态
      userAsyncRoutes.push({ path: "*", redirect: "/404", hidden: true });
      context.commit("setRoutes", userAsyncRoutes);
      // 返回该用户的动态路由信息
      return userAsyncRoutes;
    },
  },
};
复制代码

 

posted on   朱龙旭的网络  阅读(88)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· 支付宝 IoT 设备入门宝典(下)设备经营篇
· 万字调研——AI生成内容检测
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
点击右上角即可分享
微信分享提示