文章目录

  • 1. 五张表模型
  • 2. 需求分析
  • 3. 数据库设计
  • 4. 用户分组
  • 5. 权限分类
  • 6. 参考

1. 五张表模型

RBAC(Role-Based Access Control),基于角色的访问控制。做权限控制系统最常见的方式就是基于此模型的。它的基本思想就是:把资源能否访问、操作能否执行设定为权限;设定不同角色配对权限,使某种权限在某种角色下为被允许状态;最后再根据现实的组织方式为每用户分配角色。由此构建 5 个表:

编号 1 2 3 4 5
名称 用户表 角色表 权限表 用户角色关系表 角色权限关系表
表名 sys_users sys_roles sys_perms rel_user_role rel_role_perm

其中:

  • 用户和角色关系为多对多;
  • 角色与权限关系也是多对多。

2. 需求分析

以电视剧《潜伏》为背景举例,我们要为保密局天津站建设一个管理系统,这里就要理清相关人员的各种关系。

天津站的组织关系(用户、角色、用户角色关系)如下

  • 一把手是站长吴敬中,下设两个部门:机要室和行动队。
  • 机要室主任为余则成。
  • 行动队由队长马奎,还有两个小喽啰米志国、陈北伐组成。
  • 此外,余则成还是站长的学生(心腹下属)。

保密局的日常工作有这几项(权限):

  • 监听电报。监听截获内外界各组织的电报;
  • 打电话。给南京打电话,给站长太太打电话、给穆连成打电话,以及给绣春楼打电话;
  • 派人跟穆晚秋谈恋爱。从而榨取穆连成财宝;
  • 帮站长收别人送的一辆小汽车。斯蒂庞克牌的。

很显然,上边这些任务不是人人能做(角色权限关系):

  • 电话大家都能用;
  • 电讯室的电报不能让小喽啰随便听;
  • 跟穆晚秋谈恋爱、代收小汽车都是帮站长敛财的私事,只能让心腹余则成去做。

因此,以上关系可梳理为下图所示


3. 数据库设计

据上,理出用户、角色、权限、用户-角色、角色-权限的关系如下图,这就是常见的权限5表。当然现实应用中的表不可能就这么两三列,为了简化绘图这里只显示了关键属性,其他需要随意添加哈。

对应的,构建数据库表。

1. 用户表(sys_users)

id name
1 吴敬中
2 余则成
3 马奎
4 米志国
5 陈北伐

2. 角色表(sys_roles)

id name
1 站长
2 机要室主任
3 行动队队长
4 小喽啰
5 站长心腹

3. 权限表(sys_perms)

id operation
1 监听电报
2 打电话
3 和晚秋搞对象
4 代收斯蒂庞克

4. 用户-角色表(rel_user_role)

id uid rid *解释
1 1 1 吴敬中 -> 站长
2 2 2 余则成 -> 机要室主任
3 2 5 余则成 -> 站长心腹
4 3 3 马奎 -> 行动处长
5 4 4 米志国 -> 小喽啰
6 5 4 陈北伐 -> 小喽啰

5. 角色-权限表(rel_role_perm)

id rid pid *解释
1 1 1 站长 -> 监听电报
2 1 2 站长 -> 打电话
3 2 1 机要室主任 -> 监听电报
4 2 2 机要室主任 -> 打电话
5 3 1 行动处长 -> 监听电报
6 3 2 行动处长 -> 打电话
7 4 2 小喽啰 -> 打电话
8 5 3 站长心腹 -> 和晚秋谈恋爱
9 5 4 站长心腹 -> 代收斯蒂庞克

4. 用户分组

用户数量大且可分组授权时,添加 3 个表。

  • 用户组
  • 用户-用户组
  • 用户组-权限

米志国和陈北伐同属 行动二科 的小喽啰,他们具有相同权限,因此将上面数据库设计的表结构更为

1. 用户组表(sys_groups)

id name
1 行动二科

2. 用户-组表(rel_user_group)

id uid gid *解释
1 4 1 米志国 -> 行动二科
2 5 1 陈北伐 -> 行动二科

3. 组-角色表(rel_group_role)

id gid rid *解释
1 1 4 行动二科 -> 小喽啰

5. 权限分类

基于 Web 的应用主要通过 URL 来实现对不同资源的控制,如查看页面、访问数据等。所以权限指的其实就是对 URL 的控制。一个角色有多少个权限就取决于他有多少个 URL 的访问权限。
当然也可以将一个网站资源的权限进行再次划分,分为菜单、导航栏、页面元素和功能操作(根据需要,不一定非拆分)。

6. 参考

[1]. 用户,用户组,角色,权限
https://blog.csdn.net/qq_30519491/article/details/80941201
[2]. RBAC(基于角色的访问控制权限的基本模型)
https://blog.csdn.net/weixin_41174072/article/details/83387223
[3]. RBAC权限管理系统
https://www.cnblogs.com/zenan/p/10576489.html
[4]. rbac 表结构的。设计
https://www.cnblogs.com/chengege/p/10695713.html

.
.
.
.
.
.


桃花仙人种桃树,又摘桃花换酒钱_

用户角色及权限管理设计实例(基于RBAC模型)相关推荐

  1. 会话管理 轻量php框架_SpringSecurity+JWT权限管理训练营-1基于RBAC模型的权限管理系统...

    1.什么是权限管理系统? 权限管理是一个几乎所有后台系统的都会涉及的一个重要组成部分,可以说是后台项目的基本功,主要目的是对整个后台管理系统进行权限的控制,而针对的对象是员工,避免因权限控制缺失或操作 ...

  2. Jenkins 用户角色及权限管理

    Jenkins 用户.角色及权限管理 官方文档:https://jenkins.io/zh/doc/ 1.插件管理 首先,登录以管理员身份登录Jenkins 然后,在插件管理模块中,检查Role-ba ...

  3. PostgreSQL用户角色和权限管理

    一.用户角色管理 1.创建用户角色 create user cjr LOGIN;create role cjr1 CREATEDB;create role cjr2 superuser; create ...

  4. RBAC权限管理设计

    RBAC权限管理设计 一.RBAC组成 1. RBAC 2. RBAC组成 3. RBAC支持的安全原则 4. RBAC的优缺点 二.RBAC权限分配 1. RBAC的功能模块 2. RBAC权限分配 ...

  5. 大型门户网站的RBAC用户权限管理设计

    这是我在网上找的一些设计比较好的RBAC权限管理 不知道,像新浪.搜狐.网易.百度.阿里巴巴.淘宝网的RBAC用户权限这一块,都是这种细颗粒的RBAC设计开发,还是把他们像用户组.角色组.权限组.操作 ...

  6. 数据库管理员用户角色组权限设计

    一.引言 因为做过的一些系统的权限管理的功能虽然在逐步完善,但总有些不尽人意的地方,总想抽个时间来更好的思考一下权限系统的设计. 权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新 ...

  7. Spring Security基于角色的权限管理

    1.Spring Security 1.1核心领域概念 认证(Authentication):认证是建立主体(principal)的过程. 主体通常是指在应用程序中执行操作的用户.设备或其他系统 授权 ...

  8. Jenkins 中基于角色的权限管理

    Jenkins 中基于角色的权限管理 原文地址: Jenkins 中基于角色的权限管理 | 超级小豆丁 (mydlq.club) 系统环境: Jenkins 版本:2.213 一.简介 Jenkins ...

  9. 从零开始——基于角色的权限管理01(补充)

    此博文较为详细的介绍从零开始--基于角色的权限管理01文中的两个部分的流程(解释代码). 1) index.jsp中提交跳转action action的login,获取jsp页面传过来的用户名密码和验 ...

最新文章

  1. 日志平台(网关层) - 基于Openresty+ELKF+Kafka
  2. c语言学生信息系统 完整版,C语言 学生信息管理系统(完整版).docx
  3. shiro的简单使用
  4. hashmap储存有向图_如何在Rust中构建向量的HashMap?
  5. 一个查看Cookie的便捷工具——EditThisCookie
  6. Mac下svn搭建和使用方法
  7. vue新增属性是否会响应式更新?
  8. aotuwried是java的注解吗_@autowire注入为null
  9. 网络游戏简易分区服务器架构详解
  10. Allegro cadence下载安装
  11. 蓝宝石rx580怎么超频_【蓝宝石 RX580 8G D5 超白金 OC 显卡使用总结】游戏|界面|按钮|频率_摘要频道_什么值得买...
  12. python国际象棋游戏_国际象棋版AlphaZero出来了 还开源了Keras实现
  13. windows下使用命令打开pdf文件
  14. 基于数据kmeans_data分析聚类画图 使用sc轮廓系数作为评价指标
  15. 入手评测 锐龙r7 5825u和i5 1240p选哪个好
  16. php开发中常用字符串函数总结
  17. Qt QMdiArea和QMdiSubWindow的基本用法
  18. C++ Essential Training C ++基础培训 Lynda课程中文字幕
  19. 8小时外你做什么?下班后的生活决定你的竞争力
  20. 9-斐波拉契数列解法归纳

热门文章

  1. QuickBooks Online For Dummies, 4th Edition 免积分下载
  2. QuickBooks qbo api transactionlist 获取数据不全的问题
  3. 天龙八部手游服务器找不到了,为什么天龙八部手游同样版本,区跟服务器都会 – 手机爱问...
  4. 上海科技大学计算机浙江分数线,上海科技大学2020录取分数线 上海科技大学录取分数线各省汇总...
  5. JAVA社招,让老板心动的简历原来是这样
  6. UI设计存在什么意义?
  7. 提高spark任务稳定性的解决方案及Blacklist 机制说明解释
  8. python爬虫爬取当当网的商品信息
  9. python基本语法学习笔记
  10. MyBatis进行增删改查