作者:lemonade 来源:博客园 发布时间:2011-02-23 16:13 阅读:125 次 原文链接 [收藏]
前言
上篇文章组织结构与权限模型设计(一)中,介绍了权限模型的第一种实现方案,即用户与角色关联、角色与权限关联,职位作为用户的一个标签显示,不涉及权限。这种方案存在一个问题,通常我们说的权限,其实是包含两个维度:操作功能和数据范围。比如学校班级的班长有检查同学作业、布置任务的权利,这是说他能操作的功能;另外,班长只对本班级的学生有布置任务的权利,这里是对数据范围的限制。
方案二
基于上面的分析,可以认为权限是由操作功能和数据范围两个维度组成的,角色定义用户的操作功能,职位定义数据范围。在一个企业里面,不同部门的部门经理虽然职位是一样的(都是部门经理),但是他们所能做的事是不一样的:开发部的经理管项目开发事项、财务部的经理管理财务收支,映射到系统中,就是说他们的操作功能不一样。
相对第一种方案,模型没有发生变化,唯一改变的是对权限和职位的定义不一样了。
对于职位:在方案一中,职位只是作为一个标签显示,不带任何的语义,但是在方案二中我们需要用职位去管数据范围。要知道程序并不知道部门经理能够管理部门成员,对它来说这只是两个不同的字符串而已。有人可能会提出,程序加个if..else判断不就得了,但是要知道企业里面职位是五花八门的,有的公司可能叫部门经理为主任。为了应对这种可变性,我们需要对职位增加一个语义,告诉程序哪个职位是管理者,哪个职位只是普通成员。我们暂且叫这个语义为power,它有两个选择:Manager或Member。将这个语义属性附加到职位上,Manager是具有管理权限的人员,它能够管理本领域内的事项(领域的概念在上一篇中已介绍过)。
对于权限:在方案一中,没有将权限细分为操作功能和数据范围两个维度,权限既管操作功能也管数据范围。在方案二中,权限只定义操作功能,数据范围由职位决定。
打个比方,对于查看工作日志这个功能。
按方案二实现的话,系统中会有一个权限项,叫查看工作日志(操作功能),至于查看谁的工作日志(数据范围),则依据成员的职位,如果他是部门经理,则能查看整个部门的工作日志,如果他是普通成员,则只能查看自己的工作日志。将权限项赋给一个角色,再将这个角色和职位赋给用户,用户就具备了相关的权限。
按方案一实现的话,系统需要两个单独的权限项,叫查看部门成员工作日志、查看自己的工作日志。这两个权限项既定义了操作功能(查看日志),又定义了数据范围(看谁的日志)。将权限项赋给一个角色,再将这个角色赋给用户,用户就具备了相关的操作权限。
其实两者的区别就在于方案一把二维拉平成了一维,假设操作功能用F表示,数据范围用D表示,那么方案一中的权限项会有F * D种。
总结
方案二的优点是:将操作功能和数据范围分为两个维度管理,分别用角色权限和职位管理,清晰易扩展。它的缺点就是,对用户来说有点繁琐,需要在两个地方(角色、职位)定义。
分享到:
相关推荐
### 基于RBAC的权限设计模型 #### RBAC模型概述 RBAC(Role-Based Access Control,基于角色的访问控制)模型作为一种广泛接受且应用成熟的权限管理模型,在现代信息系统中占据着重要的地位。该模型通过引入“角色...
根据给定文件的信息,我们可以对“权限模型”这一主题进行深入探讨,并且解析其核心概念、结构以及在实际场景中的应用。 ### 权限模型概述 权限模型是信息系统设计中的一个重要组成部分,它定义了系统中不同实体...
数据库设计的关键在于构建合理的关系模型,以支持权限的层次结构和多对多关系。主要实体包括: - **权限表**:存储所有权限信息,包括上下级关系。 - **用户表**:记录用户基本信息,关联角色和组。 - **角色表...
例如,对于数据敏感度高、组织结构复杂的大型企业,用户-组织-岗位-角色-权限模型能更好地满足数据安全和管理效率的需求。而在小型或功能简单的系统中,用户-角色-权限模型可能就足够了。 总的来说,基于RBAC的权限...
RBAC有助于简化管理,通过角色来标准化权限,同时强化安全策略,并且可以随着组织结构的变化灵活调整。 4. 在RBAC的核心对象模型设计(RBAC0)中,包含了用户、用户组、角色、控制对象、访问模式和操作等元素。控制...
此外,通过角色继承和责任分离机制,系统能够更好地适应组织结构的变化和安全策略的调整,确保了权限管理的灵活性和有效性。在设计这样的系统时,需充分理解RBAC的各个组件和原则,并结合实际业务需求,构建出符合...
通用权限管理设计是构建...通过精心设计的数据库模型,可以有效地支持权限的分配、继承和管理,以实现高效且安全的应用程序环境。在后续的篇章中,将进一步探讨具体的数据库设计细节,以实现这一通用的权限管理系统。
RBAC(Role-Based Access Control,基于角色的访问控制)是一种广泛应用的权限模型,它通过角色这一中间层将权限与用户关联,提高了权限管理的灵活性和效率。NIST定义的RBAC模型由四个基本组件构成: 1. **RBAC0...
2. **数据模型设计**:定义用户、角色和权限的数据结构,可能使用数据库表来存储这些信息,设计合适的关联关系。 3. **权限分配算法**:设计一种算法来决定用户可以访问哪些数据,这可能涉及到多层嵌套的权限和复杂...
这篇论文探讨的是团队协作中软件可靠性模型与企业组织结构的关系,特别关注在大型工程项目管理中的应用。它提出了一个问题,即传统的线性组织结构(如职能型、矩阵型、项目型)在处理非线性项目时可能存在沟通和协调...
5. 角色更新:当组织结构或业务需求变更时,可以调整角色和权限,确保权限分配的准确性。 四、RBAC的扩展 1. 权限继承:子角色可以继承父角色的权限,简化权限管理。 2. 权限委托:用户可以在其权限范围内将部分...
数据模型设计是构建数据库系统的基础,它涉及到对业务需求的理解、数据的组织和关系的定义。本篇文章将详细解析数据模型设计的方法和样例,帮助读者深入理解这一关键环节。 首先,数据模型设计面临的挑战包括从传统...
基于角色的访问控制(RBAC)模型是企业环境中广泛采用的一种访问控制策略,尤其适用于大型企业,因为它能够有效地简化权限管理并适应组织结构的变化。 RBAC模型的核心理念是将权限与角色关联,而非直接与用户关联。...
- 灵活性:角色可以动态调整,以应对组织结构或业务流程的变化,而无需修改每个用户的具体权限设置。 - 可维护性:减少直接关联用户与权限的复杂性,使得权限管理更加简洁和高效。 - 易于扩展:随着系统的扩大,RBAC...
### 基于.NET动态用户权限管理模型的设计与实现 #### 概述 随着企业管理信息系统规模的不断扩大,信息系统的权限管理成为一个日益突出的问题。本文针对现有信息系统权限管理存在的不足,提出了一种新的权限管理...
这个“QT结构树界面设计”项目显然展示了如何在QT应用中构建一个层次化的视图,用于表示一级部门、二级部门以及人员的组织结构。 首先,我们要理解QT中的`QTreeWidget`或`QTreeView`类。这两个类是实现树状视图的...
1. **权限模型**:权限设计的核心是权限模型,常见的有RBAC(Role-Based Access Control,基于角色的访问控制)、ACL(Access Control List,访问控制列表)和ABAC(Attribute-Based Access Control,基于属性的访问...