当前位置: 首页 > news >正文

菜单权限功能设计

一. 方案1

菜单数据

菜单数据如果非常简单,固定不变,我们可以直接用json文件来维护。每个菜单有个id标识唯一性,菜单有父子关系,最多三级。有些菜单还支持配置按钮权限。

{"menu": [{"parent_id": "","id": "data_analysis","name": "数据分析","button_list": null,"children": [{"parent_id": "data_analysis","id": "data_analysis_1","name": "商家信息","button_list": [{"button_name": "搜索","button_id": "data_analysis_1_search"}],"children": []}]}]
}

路由权限数据

菜单和其相关的按钮都可以绑定多个路由,一个角色配置了菜单和按钮的权限,则其就具备对应的路由权限。路由权限数据也可用json来维护,内容就是简单的kv,key是菜单id或者按钮id,value是一个数组存一批路由。

{"data_analysis_1": ["/admin/data/list"],"data_analysis_1_search": ["/admin/data/detail"]
}

角色表和角色权限表

按照角色分配菜单权限,所以分配的对象是菜单。我们需要维护一个角色表。比如 admin_role, 核心字段就是角色的唯一标识,比如 role_id。

给用户分配的菜单,需要一个角色菜单表记录它们的关联。有些菜单中还有按钮等操作单元,我们统一可以记录角色和这些按钮操作的关系。所以创建个表,比如 admin_role_access。 

表中字段

  • menu_id_data: 
    • 存一个角色有哪些菜单配置,用json维护一个数组,元素就是每个菜单的id。
    • 比如如果没用权限,那么 menu_id_data的值为 {"menu_data": []}
    • 如果给某个角色勾选了一个菜单权限,这个菜单id就会存起来,比如{"menu_data": ["data_analysis", "data_analysis_1"]}
  • button_id_data:
    • 存一个角色有哪些菜单的button权限,也是用json维护的数组,元素就是每个button的id。
    • 比如如果没用权限,那么 button_id_data的值为{"button_data": []}
    • 如果给某个角色勾选了某个菜单下的按钮权限,这个按钮id就会存起来,比如{"button_data": ["data_analysis_1_search"]}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 算法_队列+宽度优先搜索---持续更新
  • 数据库C语言删除修改和输出
  • 6. LinkedList与链表
  • LLM大模型学习:AI大模型原理、应用与未来趋势!
  • 大模型实战一、Ollama+RagFlow 部署本地知识库
  • yolov5 +gui界面+单目测距 实现对图片视频摄像头的测距
  • 屏幕空间UV 警戒线
  • 氚云,低代码领风者如何破解行业的“中式焦虑”?
  • 首个大模型供应链安全领域的国际标准,WDTA《大模型供应链安全要求》标准解读
  • 【复盘】近期博客内容升级
  • [Linux]:文件(下)
  • 网络编程9.10
  • 爆改YOLOv8|利用yolov9的ADown改进卷积Conv-轻量化
  • 速盾:高防 cdn 分布式防御攻击?
  • JVM合集
  • iOS | NSProxy
  • Java 内存分配及垃圾回收机制初探
  • Mac转Windows的拯救指南
  • Otto开发初探——微服务依赖管理新利器
  • PaddlePaddle-GitHub的正确打开姿势
  • 分类模型——Logistics Regression
  • 构造函数(constructor)与原型链(prototype)关系
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 检测对象或数组
  • 排序算法之--选择排序
  • 深入 Nginx 之配置篇
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • Semaphore
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (poj1.3.2)1791(构造法模拟)
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (分布式缓存)Redis持久化
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (回溯) LeetCode 77. 组合
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (原創) 物件導向與老子思想 (OO)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • **python多态
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .Net 6.0--通用帮助类--FileHelper
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET_WebForm_layui控件使用及与webform联合使用
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .Net插件开发开源框架