系统权限管理功能设计研究

news/2025/3/14 17:49:53/

系统权限管理功能设计研究

  • 一、背景
  • 二、权限级别
  • 三、实现权限管理功能的方法
    • 3.1 数据库表设计
      • 3.1.1 数据库表设计字段
      • 3.1.2 数据库表字段含义
    • 3.2 增删改查封装方法
      • 3.2.1 查询封装方法
      • 3.2.2 增加方法
      • 3.2.3 修改、删除方法
    • 3.3 基于ORM 框架的封装

一、背景

在日常生活中,遇到的应用系统,都会带有权限功能,用来约束我们访问系统的行为。一个好的权限功能,应该具是动态的、合理的以及安全的。用一句话来描述权限,即Who(谁)对Which(某个模块)进行How(何种操作)

权限指的是系统提供的功能和数据。可以看到,权限功能包含功能权限和数据权限1

功能权限指的是用户能够执行何种操作,包含对目录、菜单和按钮的操作。
数据权限是的是用户能够访问的数据集。

在这里插入图片描述

权限分配:将资源分配给角色的交互。
角色分配:将角色分配给用户的交互。

在实际业务中,权限和组织部门是息息相关的。用户是某个部门的一员。权限给到用户就是通过部门树的结构进行组织安排2
在这里插入图片描述

二、权限级别

一般地,可以将权限级别分为以下五类,基本可以涵盖对数据私密性的管控。

权限类别权限级别
全部数据权限1
部门数据及以下权限2
部门数据权限3
仅本人数据权限4
自定义数据权限#

三、实现权限管理功能的方法

该模块从数据库设计、到数据库CRUD的封装方法,再到真正的实践讲解。

3.1 数据库表设计

3.1.1 数据库表设计字段

在数据库表设计时候,业务表中必须存在部门ID字段创建者字段,以便后续CRUD操作根据该字段进行过滤数据。

在这里插入图片描述

3.1.2 数据库表字段含义

部门ID字段用于数据权限的识别,创建者字段允许该条记录的创建者能够访问到这条数据。。

3.2 增删改查封装方法

3.2.1 查询封装方法

查询很容易理解,就是动态添加where条件

3.2.2 增加方法

插入操作时候自动拼接 where 等于表达式,如拼接 user_id = ?

3.2.3 修改、删除方法

二者封装操作和增加方法类似

我们可以得到,封装拼接条件都是在执行该类型的方法前进行,统一根据某个字段进行筛选属于某个部门或个人的记录。

3.3 基于ORM 框架的封装

无论使用哪一类ORM框架,是JPA还是Mybatis,都会有解析字符串的的工具函数,利用工具函数进行字段的拼接完成数据权限功能的设计。

以Mybatis为例,通过其插件机制对CRUD语句进行封装来开发数据权限功能。

具体到查询语句上来讲,在数据权限拦截器中,处理select语句,

protected void processSelect(Select select, int index, String sql, Object obj) {SelectBody selectBody = select.getSelectBody();if (selectBody instanceof PlainSelect) {this.setWhere((PlainSelect) selectBody, (String) obj);} else if (selectBody instanceof SetOperationList) {SetOperationList setOperationList = (SetOperationList) selectBody;List<SelectBody> selectBodyList = setOperationList.getSelects();selectBodyList.forEach(s -> this.setWhere((PlainSelect) s, (String) obj));}}

  1. 邓斌,丁家满,姜瑛,贾连印,江虹.一种细粒度数据权限控制框架[J/OL].上海理工大学学报:1-9[2022-09-06].DOI:10.13255/j.cnki.jusst.20220425001. ↩︎

  2. 程学林,杨小虎,卓崇魁.基于组织架构的数据权限控制模型研究与实现[J].计算机科学,2021,48(S1):558-562. ↩︎


http://www.ppmy.cn/news/813794.html

相关文章

上海市长宁区委统战部一行到访深兰科技调研

10月18日&#xff0c;上海市长宁区委常委、区委统战部部长王罗清一行到访深兰科技进行考察调研&#xff0c;双方围绕科技创新、人工智能产业落地等话题进行深入交流。 长宁区区委统战部副部长、区工商联党组书记张晓磊&#xff0c;区委统战部办公室负责人(挂职)吕垚&#xff0c…

JS 根据某个字段进行排序或分组;JS 将数组分为 n 个一组

JS 数组中根据某个字段进行排序 const arr [ { name: "崔喻琪", age: 32 }, { name: " 王忱景", age: 18 }, { name: " 房真睿", age: 27 }, { name: "姬泉孝", age: 20 }, { name: "余嘉芳", age: 16 }, { na…

毕业设计-基于Android的高校食堂实时点餐信息与配送系统的设计与实现

一、选题背景和意义&#xff1a; 人们不再满足于最基本的衣食住行&#xff0c;而是追求更好、更优、更快捷的生活方式。“民以食为天”&#xff0c;餐饮业具有巨大的投资市场&#xff0c;是中国的黄金产业。随着互联网的普及以及手机智能化的发展&#xff0c;越来越多的人开始逐…

宝地矿业上交所上市:年营收7.6亿募资8.8亿 市值50亿

雷递网 雷建平 3月10日 新疆宝地矿业股份有限公司&#xff08;简称&#xff1a;“宝地矿业”&#xff0c;股票代码为&#xff1a;“601121”&#xff09;今日在上交所主板上市。 宝地矿业此次发行价为4.38元&#xff0c;发行20,000万股&#xff0c;募资总额为8.76亿元。 宝地矿…

微信小程序志愿者服务的设计与实现

​​​​​​​源码获取&#xff1a;https://www.bilibili.com/video/BV13m4y1c7NW/ 技术要求&#xff1a; &#xff08;1&#xff09;微信小程序开发工具开发&#xff1b; &#xff08;2&#xff09;后端&#xff1a;ssm mysql bootstrap&#xff1b; &#xff08;3&…

经济扩张、文化渗透与现代会计制度演化研究

研究问题及研究意义&#xff08;1000-2000字&#xff09; 会计惯例和会计准则决定了人类的经济行为&#xff0c;并成为指导经济行为的框架&#xff08;***&#xff0c;2021&#xff09;。会计制度的建立也应是基于人类经济行为合作共赢、可持续的需求之上。在经济学的演化本体…

书城项目_第四阶段_图书模块

MVC 概念 1、MVC 全称&#xff1a;Model 模型、 View 视图、 Controller 控制器。 2、MVC 最早出现在 JavaEE 三层中的 Web 层&#xff0c;它可以有效的指导 Web 层的代码如何有效分离&#xff0c;单独工作。 3、View 视图&#xff1a;只负责数据和界面的显示&#xff0c;不接受…

大学生网页作业成品——基于HTML网上书城项目的设计与实现

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…