`
徜徉の小溪
  • 浏览: 448666 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

RBAC用户权限管理数据库设计

阅读更多

RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。(如下图)



角色是什么?可以理解为一定数量的权限的集合,权限的载体。例如:一个论坛系统,“超级管理员”、“版主”都是角色。版主可管理版内的帖子、可管理版内的用户等,这些是权限。要给某个用户授予这些权限,不需要直接将权限授予用户,可将“版主”这个角色赋予该用户。 

 

当用户的数量非常大时,要给系统每个用户逐一授权(授角色),是件非常烦琐的事情。这时,就需要给用户分组,每个用户组内有多个用户。除了可给用户授权外,还可以给用户组授权。这样一来,用户拥有的所有权限,就是用户个人拥有的权限与该用户所在用户组拥有的权限之和。(下图为用户组、用户与角色三者的关联关系)

在应用系统中,权限表现成什么?对功能模块的操作,对上传文件的删改,菜单的访问,甚至页面上某个按钮、某个图片的可见性控制,都可属于权限的范畴。有些权限设计,会把功能操作作为一类,而把文件、菜单、页面元素等作为另一类,这样构成“用户-角色-权限-资源”的授权模型。而在做数据表建模时,可把功能操作和资源统一管理,也就是都直接与权限表进行关联,这样可能更具便捷性和易扩展性。(见下图)



请留意权限表中有一列“权限类型”,我们根据它的取值来区分是哪一类权限,如“MENU”表示菜单的访问权限、“OPERATION”表示功能模块的操作权限、“FILE”表示文件的修改权限、“ELEMENT”表示页面元素的可见性控制等。

 

这样设计的好处有二。其一,不需要区分哪些是权限操作,哪些是资源,(实际上,有时候也不好区分,如菜单,把它理解为资源呢还是功能模块权限呢?)。其二,方便扩展,当系统要对新的东西进行权限控制时,我只需要建立一个新的关联表“权限XX关联表”,并确定这类权限的权限类型字符串。

 

这里要注意的是,权限表与权限菜单关联表、权限菜单关联表与菜单表都是一对一的关系。(文件、页面权限点、功能操作等同理)。也就是每添加一个菜单,就得同时往这三个表中各插入一条记录。这样,可以不需要权限菜单关联表,让权限表与菜单表直接关联,此时,须在权限表中新增一列用来保存菜单的ID,权限表通过“权限类型”和这个ID来区分是种类型下的哪条记录。

 

到这里,RBAC权限模型的扩展模型的完整设计图如下:



随着系统的日益庞大,为了方便管理,可引入角色组对角色进行分类管理,跟用户组不同,角色组不参与授权。例如:某电网系统的权限管理模块中,角色就是挂在区局下,而区局在这里可当作角色组,它不参于权限分配。另外,为方便上面各主表自身的管理与查找,可采用树型结构,如菜单树、功能树等,当然这些可不需要参于权限分配。

 

以上,是从基本的RBAC模型进行了扩展,具体的设计要根据项目业务的需要作调整。欢迎大家提出批评意见!

分享到:
评论
6 楼 GeorgeFeng 2018-12-18  
学习啦,感谢
5 楼 王静娜 2015-08-10  
作者的实体图画的很好很有条理,但是个人觉得用户组对应的是资源,如果用户组对应的是角色,那它就偏向于角色组的功能了
4 楼 徜徉の小溪 2014-09-17  
千千结 写道
和权限表相关联的 页面元素 或 操作表等   页面代码是怎么实现的    我现在的需求是某些用户(比如客服)登录进来只有查看的权限 没有删除 添加等的权限 ,当他点击删除按钮的时候提示无权限 这样代码的思路是怎么实现的 。还有如果页面中的元素的(比如一个按钮) 某些用户点击提示无权限  这样代码是怎么实现的那 。求大神提示



如果是这样的话  RBAC这种权限设计 不变,只不过在你登录系统中你可以将resource资源全部加载进来,现加载资源,然后在进行权限验证,也就是说你不管谁登录都加载resource,然后当用户触发页面一个时间或请求时,进行权限验证,大致的设计思路是不变的。
3 楼 ym919202 2014-09-03  
[align=left][size=x-small]
[flash=200,200][url][img][list]
[*]
下点功夫
[/list][/img][/url][/flash]
[/size][/align]
2 楼 ym919202 2014-09-03  
速度感发生地方
1 楼 千千结 2014-08-13  
和权限表相关联的 页面元素 或 操作表等   页面代码是怎么实现的    我现在的需求是某些用户(比如客服)登录进来只有查看的权限 没有删除 添加等的权限 ,当他点击删除按钮的时候提示无权限 这样代码的思路是怎么实现的 。还有如果页面中的元素的(比如一个按钮) 某些用户点击提示无权限  这样代码是怎么实现的那 。求大神提示

相关推荐

    基于RBAC权限管理数据库表设计

    总结来说,基于RBAC的权限管理数据库表设计涵盖了角色、权限、用户、角色-权限关联、用户-角色关联等多个核心组件,通过这些组件的组合,可以构建出一个强大且易于维护的权限管理体系。在实际应用中,还可以根据业务...

    用户权限管理数据库设计

    用户权限管理是IT系统设计中的...以上就是用户权限管理数据库设计的主要知识点,实际设计过程中还需要结合具体业务需求、法律法规以及安全标准进行综合考虑,以构建一个既满足功能需求又具备高安全性的权限管理体系。

    基于角色的权限管理数据库设计

    本文档主要介绍了一种基于角色的权限管理系统(RBAC)的数据库设计方案,并通过具体的SQL脚本实现了该方案的基本功能。RBAC(Role-Based Access Control)是一种常用的安全管理机制,它通过定义不同的角色以及这些...

    RBAC权限管理数据库和项目

    总的来说,这个压缩包提供了一个RBAC权限管理系统的核心部分,包括数据库设计和PHP代码,对于学习和实施RBAC机制是一个很好的起点。开发者需要理解角色、用户、权限之间的关系,以及如何在代码中实现权限检查,才能...

    基于RBAC的权限管理系统的实现

    文件“JAVA用户权限管理概要设计说明书-外发版.pdf”可能会提供更详细的设计方案,包括数据库表结构设计、接口设计以及权限验证机制。另一份“基于RBAC的权限管理系统的实现.pdf”可能是具体实现的技术文档,涵盖了...

    RBAC用户角色权限设计方案

    ### RBAC用户角色权限设计方案详解 #### 一、引言 在现代软件系统尤其是企业级应用中,用户角色权限管理是非常重要的一部分。合理的权限管理不仅可以提高系统的安全性,还能提升用户体验,使得不同用户能够根据自己...

    一个基于RBAC的权限管理系统

    综合以上信息,这个基于RBAC的权限管理系统采用了分层架构设计,实现了用户、角色和权限的灵活配置,以支持MIS系统的安全访问控制。系统采用C#语言开发,并且依赖于.NET框架,数据存储可能使用的是SQL Server数据库...

    ThinkPHP(RBAC)权限管理系统_第17讲_用户管理

    通过以上步骤,我们可以构建出一个完整的RBAC权限管理系统。在实际项目中,还需要考虑如权限缓存、角色继承、多级权限等高级特性,以满足更复杂的业务需求。同时,为了保证系统的安全性和稳定性,还需要进行充分的...

    ThinkPHP(RBAC)权限管理系统_第21讲_角色管理之配置权限

    通过上述步骤,我们可以构建一个完整的RBAC权限管理系统,实现对用户权限的有效控制。在ThinkPHP框架下,可以利用其强大的MVC模式和模型操作,以及插件系统,简化开发过程,提高代码的可维护性和扩展性。 总之,本...

    【RBAC权限管理】基于springboot+mybatis+redis的RBAC模型下的权限管理系统.zip

    基于RBAC数据库模型下的权限管理系统 可实现用户、角色模块、角色、权限模块、权限的CRUD 实现登录的过滤和权限的拦截 使用技术 springboot、mybatis搭建后台 maven进行项目管理 redis实现缓存功能 前台...

    权限管理及数据库设计

    权限管理涉及到用户角色、操作权限、访问控制等方面,而数据库设计则关乎数据的存储、查询效率以及系统的扩展性。下面将深入探讨这两个重要知识点。 首先,权限管理是确保系统安全性和数据隐私的关键。它通常基于...

    RBAC的权限设计模型

    RBAC权限设计模型 RBAC(Role-Based Access Control,基于角色的访问控制)是一种基于角色的权限设计模型,旨在解决权限管理的复杂性和灵活性问题。RBAC模型认为权限授权实际上是Who、What、How三个问题的结合,也...

    基于RBAC权限管理模型的实现

    RBAC模型通过将用户权限与角色关联,使得权限分配更加灵活且易于管理。下面将详细阐述RBAC模型的核心概念、优势以及如何在Java环境中实现。 **RBAC模型概述** 1. **角色(Role)**:角色是一组特定的权限集合,代表...

    基于RBAC的通用权限管理构件

    1. **用户管理**:创建、修改和删除用户,同时可以将用户与角色关联起来。 2. **角色管理**:定义和管理角色,包括添加、删除和修改角色,以及分配和取消分配权限。 3. **权限管理**:定义和维护系统中的各种操作...

    Springboot+Shiro+Redis实现RBAC用户权限管理

    本文将详细探讨如何使用Springboot、Shiro和Redis来实现基于RBAC(Role-Based Access Control)的用户权限管理,并结合org.creazycake插件进行Redis整合。 **Springboot** 是一个由Pivotal团队提供的开源框架,它...

    基于SpringBoot+Vue 前后端分离的RBAC权限管理系统源码+数据库(高分完整项目代码)

    基于SpringBoot+Vue 前后端分离的RBAC权限管理系统源码+数据库(高分完整项目代码),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,...

    ThinkPHP(RBAC)权限管理系统_第9讲_添加权限

    在本节教程“ThinkPHP(RBAC)权限管理系统_第9讲_添加权限...通过这节教程的学习,开发者可以掌握如何在ThinkPHP环境中搭建一个完整的RBAC权限管理系统,为用户提供安全、灵活的权限控制,提升系统的安全性与用户体验。

    FastAPI+Vue3,RBAC权限管理,实现 菜单、路由、按钮、接口 权限控制;笔记ht-mini-rbac.zip

    1. 设计数据库模型:创建用户、角色和权限表,定义它们之间的关系。例如,用户表包含角色ID,角色表包含权限ID。 2. 用户登录:用户通过认证(如用户名密码、OAuth2、JWT等)获取身份凭证,FastAPI验证后返回token。...

    基于Web的用户权限管理数据库

    在构建基于Web的用户权限管理系统时,数据库设计是至关重要的环节。这个系统旨在提供高效、安全的用户权限管理,确保用户只能访问他们被授权的资源。以下是对这一主题的详细阐述: 1. **用户权限管理基础** 用户...

Global site tag (gtag.js) - Google Analytics