本文提供一种集成功能权限和数据权限的解决方法,以满足多层次组织中权限管理方面的集中控制。本方法是RBAC(基于角色的访问控制方法)的进一步扩展和延伸,即在功能权限的基础上增加数据权限的管理,实现数据权限和功能权限的集中处理。
通用数据权限管理系统设计(一)
前言:
本文提供一种集成功能权限和数据权限的解决方法,以满足多层次组织中权限管理方面的集中控制。本方法是RBAC(基于角色的访问控制方法)的进一步扩展和延伸,即在功能权限的基础上增加数据权限的管理,实现数据权限和功能权限的集中处理。
解释:
功能权限:能做什么的问题,如增加销售订单;
数据权限:能在哪里干什么的问题,如察看北京分公司海淀销售部张三的销售订单;
术语:
资源:系统中的资源,主要是各种业务对象,如销售单、付款单等;
操作类型:对资源可能的访问方法,如增加、删除、修改等;
功能:对资源的操作,是资源与操作类型的二元组,如增加销售单、修改销售单等;
数据类型:业务系统中常用的数据权限类型,如公司、部门、项目、个人等;
数据对象:具体的业务对象,如甲公司、乙部门等等,包括所有涉及到数据权限的对象值;
权限:角色可使用的功能,分角色的功能权限和角色的数据权限;
角色:特定权限的集合;
用户:参与系统活动的主体,如人,系统等。
通用数据权限管理系统设计(二)
方法说明:
在实际应用中,数据权限的控制点一般相对固定,如针对公司、部门、个人、客户、供应商等,也就是说数据权限一般针对指定数据类型下的一些数据对象。
本方法中,数据权限的依赖于功能权限,是对功能权限的进一步描述,说明角色在指定的功能点上的数据控制权限。
本方法中采用“没有明确规定即视为有效”的原则,如果没有定义功能的数据权限,则说明该角色具有该功能的全部的权限。如果定义了功能的某种类型的数据权限,则该用户只具有该类型下指定数据的数据权限。
这段话比较绕口,下面举个例子实际例子。
某公司有北京销售部、上海销售部和广州销售部三个销售部,现在需要定义几种角色:
销售总监 -- 能察看所有销售部的销售订单;
北京销售经理 -- 只能察看北京销售部的所有销售订单;
上海销售经理 -- 只能察看上海销售部的所有销售订单;
广州销售经理 -- 只能察看广州销售部的所有销售订单;
上述角色的定义如下:
-------------------------------------------------------------------
角色名称 功能 数据类型 数据对象
-------------------------------------------------------------------
销售总监 察看销售订单
北京销售经理 察看销售订单 部门 北京
上海销售经理 察看销售订单 部门 上海
广州销售经理 察看销售订单 部门 广州
-------------------------------------------------------------------
上述定义中,销售总监只定义了功能权限,而没有定义数据权限,所以销售总监能够察看所有的销售订单;而其他几位销售经理分别定义了这一功能的数据权限,所以只能察看指定部门的销售订单。
在实际应用中,往往会出现部门分组,组长能够察看本组所有人员处理的销售订单的情况,以及某些情况下,某些人只能察看本人的销售订单的情况,这些特殊情况在上述的说明中无法解决,需要在设计和实现中进行处理。
北京销售代表 -- 只能察看北京销售部的本人的所有销售订单;
北京销售代表 察看销售订单 部门 北京
个人
通用数据权限管理系统设计(三)--数据库设计
我们先来看看传统的基于角色的权限管理系统,如下图所示,最简单的基于角色的权限管理由系统功能、系统角色、系统用户、角色功能和用户角色五部分组成。
图一:基于角色的数据库结构
为实现数据权限控制,在设计上对基于角色的权限管理进行扩充,如下图所示:
图二:通用数据权限管理系统数据库设计
对比两张图,我们可以看到,他们之间的主要变化为:
1、 增加系统资源信息和操作类型信息,系统资源为树形结构、如销售模块、销售订单等;操作类型记录可能的操作,如增加、删除、修改、查看、查询等,系统功能是资源与操作类型的组合,对资源的操作就是系统功能。
2、 增加数据对象类型和数据对象两张表,数据对象类型记录系统中需要控制的对象类型,如部门、库房、员工、客户、供应商等;数据对象记录各对象类型的对象实例,如北京销售部、上海销售部、张三、李四等等。(独立保存的好处后面会说到)
3、 增加系统资源与数据对象类型的关联表(多对多),本表为配置表,说明某种资源可能需要的控制点,如销售订单与部门类型的关联可能涉及到分部门分配权限;销售订单与客户的关联可能涉及到按客户分配权限等等。
4、 增加数据对象与角色权限的关联,这张表是真正最终实现数据权限管理的所在地。
通过这种设计,能够最小化地减少对原有权限系统的更改,并且可以很灵活地增加数据的控制点。在产品化软件的设计中使用,能够灵活满足客户的需要。
相关推荐
通用数据权限管理系统设计定义 本文提供了一种集成功能权限和数据权限的解决方法,以满足多层次组织中权限管理方面的集中控制。本方法是基于角色的访问控制方法(RBAC)的进一步扩展和延伸,即在功能权限的基础上...
"通用权限管理系统设计篇"着重探讨了如何设计一个适用于多种场景、能够处理不同用户和角色权限的系统。在这个主题下,我们将深入理解权限管理的核心概念、设计原则以及实现策略。 一、权限管理基础 权限管理主要...
"通用数据权限管理系统设计.doc"可能关注数据层面的权限控制,如行级权限、列级权限等,确保用户只能查看和操作其被授权的数据。 "1 权限系统范围.doc"和"权限系统概要.doc"可能是对整个权限系统边界和核心功能的...
在信息化社会中,权限管理成为企业、组织甚至个人数据安全的重要保障,而通用权限管理系统则扮演着核心角色。本文将深入探讨这一系统的功能、架构以及实现原理。 一、权限管理概述 权限管理是控制用户访问资源的一...
【通用权限管理系统源码】是基于ASP.NET技术开发的一个完整的权限管理解决方案,它主要用于帮助企业或组织构建具有精细权限控制的后台管理系统。ASP.NET是微软公司推出的一种强大的Web应用程序框架,它构建在.NET ...
【Winfrom通用权限管理系统】是一个基于C#编程语言和Winform框架开发的管理软件,它主要针对企业或组织内部的权限控制和管理需求。Winform框架是.NET Framework的一部分,提供了丰富的用户界面元素和事件处理机制,...
《通用后台权限管理系统需求规格说明书1》 在IT行业中,后台权限管理系统的构建至关重要,它涉及到软件系统的安全性与效率。本项目旨在通过采用Spring Boot框架,结合MyBatis和Shiro安全框架,创建一个通用的后台...
在"通用数据权限管理系统设计.doc"中,可能会详细探讨如何设计一个适应性强、易于扩展的权限管理系统。这可能包括以下几个步骤: 1. **需求分析**:明确系统需要支持的权限类型,如数据级别的访问控制(行级、列级...
从"通用权限管理系统 _DataBind.rar"来看,这可能包含数据库脚本或者数据库模型,用于创建和初始化权限管理所需的数据表结构。开发者可以通过这些脚本或模型来建立符合系统需求的数据库,确保数据的一致性和完整性。...
使用 SpringBoot + SpringDataJPa 设计通用的权限管理系统,适合管理系统快速开发迭代,可用于开发模板,项目经过测试,可完美运行! 使用 SpringBoot + SpringDataJPa 设计通用的权限管理系统,适合管理系统快速...
"通用权限管理系统Java权限处理及其实现思路" 在B/S系统中,权限管理是一个非常重要的方面,因为浏览器是每一台计算机都已具备的,如果不建立一个完整的权限检测,那么一个“非法用户”很可能就能通过浏览器轻易...
【精品】最新吉日嘎拉通用权限管理系统源码 (C#) 是一款基于C#编程语言开发的权限管理系统的完整源代码,适用于企业级应用,旨在帮助开发者更好地理解和实现权限控制功能。该系统的设计理念是“走火入魔”,寓意在...
【通用权限管理系统WEB】是一个基于Web的权限管理解决方案,它采用了Devexpress组件库来构建用户界面,提供了丰富的交互体验。这个系统设计的目标是为不同类型的组织提供一个灵活且可扩展的权限控制框架,使得管理员...
《吉日嘎啦 - 通用权限管理系统 V3.7》采用了典型的三层架构设计,包括表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种架构保证了系统的模块化和可扩展性,使得维护和升级变得更加便捷。在技术选型上,...
在软件开发领域,权限管理系统是企业级应用不可或缺的一部分,它确保了数据安全性和操作的合规性。本篇文章将深入探讨一个基于C# Winform技术,利用DevExpress控件库构建的通用权限管理系统。这个系统具有多主题功能...
7. **数据库设计**:权限管理系统的数据模型通常包括用户表、角色表、权限表、角色-权限关联表等,通过这些表来存储和管理用户、角色和权限的关系。 在【20080124】这个文件名可能代表的是该系统的某个版本或开发...
本文将深入探讨一个基于传统MVC设计模式的"通用权限管理系统",为JavaWeb初学者提供详尽的指导。 一、MVC设计模式 MVC(Model-View-Controller)设计模式是一种广泛应用于Web应用开发的架构模式,主要分为三个部分...
本篇将深入探讨如何利用C#来设计和实现一个通用权限管理系统。 一、C#语言基础 C#(读作"C Sharp")是微软公司推出的一种面向对象的编程语言,基于.NET Framework运行环境。它吸收了C++和Java的优点,语法简洁明了...