在 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; }, }, };
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· 支付宝 IoT 设备入门宝典(下)设备经营篇
· 万字调研——AI生成内容检测
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库