我们在开发系统的时候,经常会遇到系统需要权限控制,而权限的控制程度不同有不同的设计方案。
1. 基于角色的权限设计
这种方案是最常见也是比较简单的方案,不过通常有这种设计已经够了,所以微软就设计出这种方案的通用做法,这种方案对于每一个操作不做控制,只是在程序中根据角色对是否具有操作的权限进行控制;这里我们就不做详述
2. 基于操作的权限设计
这种模式下每一个操作都在数据库中有记录,用户是否拥有该操作的权限也在数据库中有记录,结构如下:
但是如果直接使用上面的设计,会导致数据库中的UserAction这张表数据量非常大,所以我们需要进一步设计提高效率,请看方案3
3. 基于角色和操作的权限设计
如上图所示,我们在添加了Role,和RoleAction表,这样子就可以减少UserAction中的记录,并且使设计更灵活一点。
但是这种方案在用户需求的考验之下也可能显得不够灵活够用,例如当用户要求临时给某位普通员工某操作权限时,我们就需要新增加一种新的用户角色,但是这种用户角色是不必要的,因为它只是一种临时的角色,如果添加一种角色还需要在收回此普通员工权限时删除此角色,我们需要设计一种更合适的结构来满足用户对权限设置的要求。
4. 2,3组合的权限设计,其结构如下:
我们可以看到在上图中添加了UserAction表,使用此表来添加特殊用户的权限,改表中有一个字段HasPermission可以决定用户是否有某种操作的权限,改表中记录的权限的优先级要高于UserRole中记录的用户权限。这样在应用程序中我们就需要通过UserRole和UserAction两张表中的记录判断权限。
到这儿呢并不算完,有可能用户还会给出这样的需求:对于某一种action所操作的对象某一些记录会有权限,而对于其他的记录没有权限,比如说一个内容管理系统,对于某一些频道某个用户有修改的权限,而对于另外一些频道没有修改的权限,这时候我们需要设计更复杂的权限机制。
5. 对于同一种实体(资源)用户可以对一部分记录有权限,而对于另外一些记录没有权限的权限设计:
对于这样的需求我们就需要对每一种不同的资源创建一张权限表,在上图中对Content和Channel两种资源分别创建了UserActionContent和UserActionChannel表用来定义用户对某条记录是否有权限;这种设计是可以满足用户需求的但是不是很经济,UserActionChannel和UserActionContent中的记录会很多,而在实际的应用中并非需要记录所有的记录的权限信息,有时候可能只是一种规则,比如说对于根Channel什么级别的人有权限;这时候呢我们就可以定义些规则来判断用户权限,下面就是这种设计。
6. 涉及资源,权限和规则的权限设计
在这种设计下角色的概念已经没有了,只需要Rule在程序中的类中定义用户是否有操作某种对象的权限。
相关推荐
### 基于角色的用户权限系统设计 随着信息技术的广泛应用,“信息安全”问题变得日益突出。为了确保系统安全,根据OSI(开放式系统互联)模型,提出了五项基本安全服务:身份验证、访问控制、数据完整性、数据机密...
访问控制是信息安全领域的重要组成部分,它涉及到对信息系统资源的访问权限管理和控制。传统的访问控制策略包括自主访问控制(DAC)和强制访问控制(MAC)。随着信息技术的发展,尤其是大型组织和复杂系统的出现,...
在IT行业中,基于角色的权限控制(Role-Based Access Control,简称RBAC)是一种常见的权限管理系统设计模式,用于高效、安全地管理用户访问权限。本文将深入探讨RBAC模型的原理、核心概念以及如何实现。 首先,...
### 基于角色访问控制的UML表示 #### 一、引言 在现代企业环境中,基于角色的访问控制(Role-Based Access Control,简称RBAC)作为一种有效的安全管理手段,被广泛应用于各种软件系统中。RBAC的核心理念是将权限...
基于角色的权限控制(Role-Based Access Control,简称RBAC)是一种有效的访问控制策略,它将权限与角色关联,用户通过角色获取相应的权限。在大型系统中,这种模型能够有效地简化权限管理和分配,尤其是在用户数量...
基于角色的权限系统是软件开发中的一个重要概念,它主要用于实现对用户访问资源的精细控制。在这样的系统中,权限不再直接赋予用户,而是通过角色这一中间层进行间接管理。用户被分配到不同的角色,每个角色拥有特定...
下面我们将详细探讨基于角色访问控制的实施方法。 1. 角色定义:首先,我们需要定义系统中的各种角色,这些角色通常对应于组织内的职位或者职责。例如,系统管理员、普通用户、财务人员等。角色的定义应明确其对应...
### Delphi 基于角色的权限控制系统设计与实现 #### 一、系统设计概述 在现代软件开发中,特别是企业级应用系统中,权限管理是非常重要的组成部分之一。权限管理系统不仅可以帮助管理员有效地控制用户访问资源的...
基于角色访问控制策略的扩展模型是在传统RBAC模型的基础上进一步的扩展和优化,这种模型主要在以下两个方面进行了扩展: 1. 多重角色分配:传统的RBAC模型中,一个用户通常只被赋予一个角色,但随着业务需求的多样...
2. **基于角色的权限管理(RBAC)**:RBAC是一种将权限分配给角色,再将角色分配给用户的机制。它通过定义一组角色以及这些角色所具有的权限来控制用户的访问行为,从而实现了对系统资源的安全访问控制。 #### 系统...
本文档主要介绍了一种基于角色的权限管理系统(RBAC)的数据库设计方案,并通过具体的SQL脚本实现了该方案的基本功能。RBAC(Role-Based Access Control)是一种常用的安全管理机制,它通过定义不同的角色以及这些...
总之,基于角色的访问控制作为一种先进的访问控制模型,在保障信息安全的同时,也极大地提升了系统的灵活性和可管理性。未来,随着技术的发展,RBAC模型将进一步完善,以更好地满足日益复杂的安全需求。
基于角色的访问控制(Role-Based Access Control,简称RBAC)是一种广泛采用的权限管理模型,它将权限与角色关联,用户通过属于不同的角色来获取相应的操作权限。在本文中,我们将探讨如何在ASP.NET环境中,利用用户...
ThinkPHP,作为国内广泛使用的PHP框架,提供了强大的权限管理功能,特别是基于角色的访问控制(Role-Based Access Control,简称RBAC)。本文将深入解析如何在ThinkPHP中实现RBAC,以及其相关的核心概念和步骤。 **...
根据给定文件的信息,下面是对“云计算平台基于角色的权限管理系统设计与实现”这一主题的相关知识点的详细阐述: 1. 云计算技术发展对Web服务业务的影响:随着互联网技术的飞速发展,Web服务业务量大幅增长,传统...
基于角色的访问控制技术(Role-Based Access Control, RBAC)是一种有效的权限管理机制,它旨在规范用户对系统资源的访问,防止未经授权的访问和潜在的安全威胁。与传统的自主访问控制(DAC)和强制访问控制(MAC)...
基于角色访问控制(RBAC)是一种在信息系统中广泛应用于用户权限管理的技术。RBAC技术最早出现在20世纪90年代,它的核心理念是将用户与权限之间的直接关联转变为通过角色的间接关联,这大大提高了权限管理的灵活性和...