`
jaychang
  • 浏览: 721753 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

基于角色访问控制的权限系统设计

 
阅读更多

我们在开发系统的时候,经常会遇到系统需要权限控制,而权限的控制程度不同有不同的设计方案。

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在程序中的类中定义用户是否有操作某种对象的权限。

  • 大小: 7.3 KB
  • 大小: 1.9 KB
  • 大小: 2 KB
  • 大小: 4 KB
  • 大小: 4.3 KB
  • 大小: 6.1 KB
分享到:
评论

相关推荐

    基于角色的访问控制模型(RBAC)

    访问控制是信息安全领域的重要组成部分,它涉及到对信息系统资源的访问权限管理和控制。传统的访问控制策略包括自主访问控制(DAC)和强制访问控制(MAC)。随着信息技术的发展,尤其是大型组织和复杂系统的出现,...

    基于角色的用户权限系统设计

    总之,基于角色的用户权限系统设计是现代企业信息系统中不可或缺的一部分,它有效地实现了权限管理和安全性控制。通过对角色、用户和权限的合理配置,可以构建出高效且安全的业务操作环境。在实际应用中,开发者需要...

    基于角色的权限控制

    在IT行业中,基于角色的权限控制(Role-Based Access Control,简称RBAC)是一种常见的权限管理系统设计模式,用于高效、安全地管理用户访问权限。本文将深入探讨RBAC模型的原理、核心概念以及如何实现。 首先,...

    基于角色的权限控制设计

    基于角色的权限控制(Role-Based Access Control,简称RBAC)是一种有效的访问控制策略,它将权限与角色关联,用户通过角色获取相应的权限。在大型系统中,这种模型能够有效地简化权限管理和分配,尤其是在用户数量...

    基于角色访问控制基于角色访问控制

    基于角色的访问控制(Role-Based Access Control,简称RBAC)是一种有效的权限管理和访问控制机制,尤其适用于处理大量用户和多样化资源的系统,如教育资源库。RBAC的核心思想是通过角色来管理和分配权限,而非直接...

    基于角色访问控制的UML表示

    基于角色访问控制(Role-Based Access Control,简称RBAC)是一种有效的权限管理策略,它将权限与角色绑定,用户通过扮演特定角色来获取相应的访问权限。这种模型旨在简化权限的分配和管理,尤其适合大型组织和复杂...

    基于角色的Web应用系统权限设计

    基于角色的访问控制(Role-Based Access Control,简称RBAC)是一种广泛采用的权限管理模型,它将权限与角色关联,用户通过属于不同的角色来获取相应的操作权限。在本文中,我们将探讨如何在ASP.NET环境中,利用用户...

    ORACLE中一个基于角色访问控制的VPD设计方案.pdf

    4. 基于角色访问控制的VPD设计方案 结合RBAC和VPD,可以构建一个更加强大的安全策略。首先,定义不同的角色,每个角色对应一组特定的VPD策略。然后,将这些角色授予不同的用户或组。这样,用户在执行查询时,不仅受...

    基于角色管理的系统访问控制.pdf

    《基于角色管理的系统访问控制》 在信息技术领域,系统访问控制是确保信息安全的重要机制,而基于角色的访问控制(Role-Based Access Control, RBAC)则是一种被广泛采纳的策略。这种策略通过定义角色和权限,实现...

    基于角色权限管理模型的设计与实现

    分析了基于角色访问控制模型的原理,将该模型引入企业信息系统的权限管理,研究了基于角色 的权限分配策略。为实现权限分配策略,本文提出了一种符合企业管理结构的权限管理实施方案,并 给出了系统关键技术的具体...

    SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建+源代码+文档说明

    SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建 ================= #### 1 . 这是基于SpringBoot和Shiro实现的一个角色权限访问控制(RBAC)的系统。 基本描述 : 1 . 一个用户具有一...

    thinkphp基于角色权限控制

    本篇文章将深入探讨ThinkPHP如何实现基于角色的访问控制(Role-Based Access Control,简称RBAC)。 RBAC是一种权限模型,它将权限与角色关联,用户通过扮演不同的角色获取相应的权限。这种设计模式有三个核心概念...

    SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建.zip

    SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建

    rbac(基于角色的访问控制)原理讲解

    基于角色的访问控制(RBAC)是一种广泛应用于信息系统中的访问控制机制。其基本思想是在用户和访问权限之间引入角色的概念,将用户和角色联系起来,通过对角色的授权来控制用户对系统资源的访问。 RBAC 模型由四个...

    Oracle系统中基于角色管理的访问控制模型.pdf

    图2则进一步描绘了Oracle系统中基于角色管理的访问控制模型,角色作为中心,通过权限数据与系统服务连接,同时通过用户委派与用户类建立联系。用户类包含用户或用户组的信息,如用户名和密码。角色类可以有多种关联...

    通向架构师的道路(第六天)之漫谈基于数据库的权限系统的设计.docx

    基于数据库的权限系统设计 本文将详细介绍基于数据库的权限系统设计,包括权限系统的基本概念、数据库设计、权限管理系统的设计思路等。 一、权限系统概述 权限系统是指对系统的访问和操作进行控制和管理,以确保...

    基于元数据与角色的煤矿综合信息管理系统权限控制模型设计与实现

    分析了现有煤矿信息管理系统中权限控制策略的不足,指出基本的账户控制策略不仅功能简单,且在系统运行过程中无法修改权限,而基于角色的访问控制策略缺少对系统数据的区分,不利于系统的扩展与维护;提出了基于元数据与...

Global site tag (gtag.js) - Google Analytics