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

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

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

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

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

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

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

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

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

会员权限 表设计mysql_用户权限管理数据库设计相关推荐

  1. DataBseDesign工作笔记001---基于RBAC用户权限管理数据库设计_用图的形式说明_精确到页面的元素

    JAVA技术交流QQ群:170933152 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角 ...

  2. .NET Core实战项目之CMS 第七章 设计篇-用户权限极简设计全过程

    写在前面 这篇我们对用户权限进行极简设计并保留其扩展性.首先很感谢大家的阅读,前面六章我带着大家快速入门了ASP.NET Core.ASP.NET Core的启动过程源码解析及配置文件的加载过程源码解 ...

  3. ToB产品设计:用户权限系统解析

    ToB产品设计:用户权限系统解析 文章以产品经理的角度思考,对权限系统的核心进行剖析,抽象出权限系统中的核心要素,并结合钉钉的一些做法对权限系统进行介绍. 一.什么是用户权限系统 权限管理系统是任何一 ...

  4. Mysql--用户权限管理数据库设计(RBAC)

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...

  5. SQL——一种简单的基于角色控制的权限管理数据库设计DEMO

    -- ---------------------------- -- Table structure for resource -- ---------------------------- DROP ...

  6. linux能修改用户的权限,linux怎样修改用户权限

    ls -l  查看目录下的文件详细信息 ll 同上 whoami 功能说明:先似乎用户名称. 语 法:whoami [--help][--version] 补充说明:显示自身的用户名称,本指令相当于执 ...

  7. 电子商务(电销)平台中用户模块(User)数据库设计明细

    原文:电子商务(电销)平台中用户模块(User)数据库设计明细 以下是自己在电子商务系统设计中的订单模块的数据库设计经验总结,而今发表出来一起分享,如有不当,欢迎跟帖讨论~ 用户基础表(user_ba ...

  8. web-ylbtech(合同管理)-数据库设计

    ylbtech-DatabaseDesgin:web-ylbtech(合同管理)-数据库设计 1.A,数据库关系图 1.B,数据库设计脚本 /App_Data/sql-basic.sql View C ...

  9. ylbtech-Bill(发票管理)-数据库设计

    ylbtech-dbs:ylbtech-Bill(发票管理)-数据库设计 -- ============================================= -- DatabaseNam ...

最新文章

  1. 图像处理_imgproc笔记(1)
  2. altium designer 绘制pcb时漏线检查
  3. 湖北省政府网站刊文:感染新冠肺炎的适龄男性应进行生育力检查
  4. mongo备份索引_【MongoDB学习之四】索引 聚合 备份与恢复 监控
  5. 12个高矮不同的人排成两排
  6. ref和out区别总结
  7. 窗体案例:注册 登陆 主界面 c# 1613533126
  8. 基本操作:Go创建GraphQL API
  9. 周期性/定时执行python任务,使用三种方法:while、apscheduler、sched
  10. junit单元测试不通过报documentationPluginsBootstrapper相关异常
  11. springboot热部署与发布
  12. android软件游戏显示fps测试工具,别被跑分骗了!能看安卓游戏帧数的小工具
  13. 物料编码,使用有意思的编码还是无意义的编码呢?
  14. NvrSDK交接文档
  15. 【C语言】输入两个正整数m和n,求其最大公约数和最小公倍数。(要求用while语句实现)
  16. mysql超市管理系统怎么写_java+mysql超市进销存管理系统设计+源代码
  17. 疯子、精神病患者、诗人、哲学家、伟大的思想家—— 尼采的孤独:《最孤独者》...
  18. speedoffice文档中如何快速撤回到上一步操作
  19. Download EditPlus Text Editor
  20. 2021年牛宝宝起名取名,惊艳有诗意的三字女孩名

热门文章

  1. 基于Python的ArcGIS二次开发实验实习教程
  2. windows10中java调用python脚本
  3. hibernate的sessionfactory
  4. 【直播、摄像头】 Http 流媒体服务器 对接摄像机(大华海康)使用 nginx 和 ffmpeg 对rtsp进行转码获取
  5. 首席新媒体运营商学院创始人黎想:如何写出爆款短视频标题
  6. 计算机组成原理 概述
  7. CF_292_D_ Drazil and Tiles_贪心、dfs
  8. 中国净水设备市场需求前景分析及投资策略研究报告2022年版
  9. 神出鬼没USO:幽灵潜艇
  10. yolov5笔记(3)——移动端部署自己的模型(随5.0更新)