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

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

一、背景


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


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


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

数据权限是的是用户能够访问的数据集。


1666274927146.jpg


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

角色分配:将角色分配给用户的交互。


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

1666274939285.jpg


二、权限级别


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

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


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


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


3.1 数据库表设计


3.1.1 数据库表设计字段


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

1666274985623.jpg

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));
        }
    }
相关文章
|
缓存 算法 数据库
文档权限管理算法的重要性:提升企业文档管理软件性能
通过文档权限管理算法提高企业文档管理软件性能是一项重要的任务,因为权限管理通常涉及到复杂的数据访问控制和查询操作,对性能有潜在的影响。以下是一些通过文档权限管理算法提高企业文档管理软件的性能的方法——
176 3
|
13天前
|
存储 安全 生物认证
《严守权限之门:ArkTS中模型访问权限的管理之道》
在鸿蒙Next的ArkTS开发中,管理模型访问权限至关重要。通过系统权限管理机制,在config.json中声明权限并使用AbilityAccessCtrl模块进行检查和申请;基于用户身份认证,确保只有授权用户能访问模型;实现细粒度权限控制,按角色分配不同权限级别;实时监测权限变化,动态调整访问权限。这些措施共同保障数据安全、隐私及应用稳定性。
54 29
|
6月前
|
安全 Java 数据安全/隐私保护
构建高效网站后台:权限管理系统设计与实现
【7月更文挑战第5天】在现代Web应用开发中,权限管理是后台系统不可或缺的一部分,它确保了系统的安全性与用户数据的隐私。良好的权限管理系统能够精细控制不同用户角色对功能模块及数据资源的访问权限,从而提升系统的灵活性和安全性。本文将深入探讨权限管理的基本概念、设计思路,并通过一个简单的代码示例展示如何在Web后台中实现基本的权限控制逻辑。
453 2
|
8月前
|
存储 监控 安全
【软件设计师备考 专题 】设计系统功能:安全性策略和工作流
【软件设计师备考 专题 】设计系统功能:安全性策略和工作流
158 0
|
安全 数据安全/隐私保护
产品权限分析与设计
产品权限分析与设计
226 0
|
设计模式 运维 监控
系统权限的主要设计
系统权限是我们日常都在用的,但是,你知道要怎么设计一个系统权限吗
225 0
|
存储 SQL 缓存
用户系统设计
注册、登录、查询、用户信息修改,哪个需求量最大? 支持100M DAU。注册,登录,信息修改 QPS 约 100M * 0.1 / 86400 ~ 100 0.1 = 平均每个用户每天登录+注册+信息修改 Peak = 100 * 3 = 300
210 0
|
安全 Java 数据库
权限管理准备工作|学习笔记
快速学习权限管理准备工作
权限管理准备工作|学习笔记
|
存储 设计模式 缓存
权限管理系统,可以这么设计
权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少。对权限做管理的系统,就是权限管理系统。
|
数据库 数据安全/隐私保护 开发者
权限管理-需求分析 | 学习笔记
快速学习 权限管理-需求分析
166 0