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

  • 一、背景
  • 二、权限级别
  • 三、实现权限管理功能的方法
    • 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. ↩︎

系统权限管理功能设计研究相关推荐

  1. 系统权限管理设计 (转:http://blog.csdn.net/chexlong/article/details/37697555)

    权限设计(转:http://blog.csdn.net/chexlong/article/details/37697555)      1. 前言:      权限管理往往是一个极其复杂的问题,但也可 ...

  2. 系统权限管理设计 (转)

    权限设计(初稿)      1. 前言:      权限管理往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断"Who对What(Which)进行How的操作"的逻辑 ...

  3. 模型化的SAP系统权限管理

    IDS Scheer中国副总裁 王磊   SAP系统刚上线时,系统内的权限管理往往并不引起重视.大家关注 更多的是系统能否顺畅运行.数据是否准确,财务帐是否能对得上等等.事实上,此时为了确保系统迅速转 ...

  4. 企业办公oa系统医药OA办公后台管理会议管理用户管理物料管理活动管理/Axure医药内部管理平台/web端后台管理系统原型/医药OA系统/权限管理

    作品介绍:企业办公oa系统&医药OA办公后台管理&会议管理&用户管理&物料管理&活动管理/Axure医药内部管理平台/web端后台管理系统原型/医药OA系统/权 ...

  5. Oracle中的系统权限管理

    在实际的IT项目管理中,对数据库的管理显得尤为重要,一般情况下,数据库的管理工作会有公司中的DBA人员来负责.但是,不是任何有关数据库的操作都要去联系DBA啦,万一人家不在或有其它事情不能立即处理时该 ...

  6. RuoYi后台系统权限管理解析

    一.前言 最近在学习spring security,自己也了些小的demo.也看了几个优秀的后台管理的开源项目.今天聊一下若依系统的权限管理的详细流程. 二.权限管理模型 若依使用的也是当前最流行的R ...

  7. SAP系统权限管理及参数设置

    SAP系统的权限管理主要是通过事务代码,权限对象,权限等3个关键对象构筑的. 1. 事务代码(Tcode) SAP系统中,每个操作命令都是唯一对应一个事务代码.事务代码是操作命令的表现形式.用户通过输 ...

  8. 业务中台--系统权限管理简介

    权限系统是每位后台产品产品经理绕不过去的问题,好的权限系统可以明确公司内不同人员.不同部门的分工,降低操作风险发生概率,便于管理等优势.笔者曾负责过若干种后台系统的搭建,其中都绕不开"权限管 ...

  9. 你或许理解错了Android系统权限管理的这两个概念

    今日科技快讯 昨日,3.15晚会上曝光了侵害消费者权益的事件:互动百科成最大虚假广告"垃圾站".郑州科视魔爪伸进几百所学校危害13万孩子眼睛.江苏远方中汇等企业被曝饲料违规使药物添 ...

最新文章

  1. Android 获取联网的IP地址
  2. AI工程师面试知识点:神经网络相关
  3. lepus mysql 复制监控_sql_mode=ONLY_FULL_GROUP_BY 导致lepus监控mysql5.7报错
  4. web访问hive速度怎么样_使用Hive的web界面:HWI
  5. leetcode 334. Increasing Triplet Subsequence | 334. 递增的三元子序列(一种较trick的解法)
  6. jdk源码分析书籍 pdf_如何阅读源码?
  7. 算法设计之—直接 遍历/穷举法、贪心算法、动态规划、回溯法、EM方法
  8. css z-index
  9. BCC实例(如何修改NS解析方式为百度智能云解析) - 解答篇
  10. wx.request 请求500弹出来_精选感恩朋友的作文500字七篇
  11. 马来西亚什么时候学计算机,关于马来西亚大学里的计算机专业,你知道多少?...
  12. 一到九乘法口诀VB源码
  13. 零时科技创始人邓永凯先生受邀出席中国创交会之科创湾区创新论坛
  14. hp android 计算器,惠普图形计算器(HP Prime Graphing Calculator)
  15. 玩转openpyxl,用python制作一个公司租车记录登记表!
  16. 华为模拟器eNSP下载与安装(win10系统)
  17. 网络恶趣实验——二层广播风暴
  18. 从阿里离职10天后,疯狂投简历面了4家公司,我的感受——不可名状的痛
  19. iOS开发细碎知识点总结二
  20. 如何利用英特尔管理工具绕过Windows防火墙

热门文章

  1. Tmw去掉名字服务器显示,7.1WOW大秘境福利:老司机分享溢出与死疽TMW监视
  2. AssetsManager下载类
  3. 操作系统——虚拟内存技术
  4. 外文文献翻译工具,4款可供选择!
  5. epel yum 安装 trickle
  6. win10升级win11后office文件无法直接打开的问题
  7. CentOS7 安装 chrome
  8. 图像处理算法python_图像处理——饱和度调整算法(python语言)
  9. 微信小程序实现电子签名并导出图片
  10. 收藏学习测试论坛,网站