用户角色及权限管理设计实例(基于RBAC模型)
文章目录
- 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模型)相关推荐
- 会话管理 轻量php框架_SpringSecurity+JWT权限管理训练营-1基于RBAC模型的权限管理系统...
1.什么是权限管理系统? 权限管理是一个几乎所有后台系统的都会涉及的一个重要组成部分,可以说是后台项目的基本功,主要目的是对整个后台管理系统进行权限的控制,而针对的对象是员工,避免因权限控制缺失或操作 ...
- Jenkins 用户角色及权限管理
Jenkins 用户.角色及权限管理 官方文档:https://jenkins.io/zh/doc/ 1.插件管理 首先,登录以管理员身份登录Jenkins 然后,在插件管理模块中,检查Role-ba ...
- PostgreSQL用户角色和权限管理
一.用户角色管理 1.创建用户角色 create user cjr LOGIN;create role cjr1 CREATEDB;create role cjr2 superuser; create ...
- RBAC权限管理设计
RBAC权限管理设计 一.RBAC组成 1. RBAC 2. RBAC组成 3. RBAC支持的安全原则 4. RBAC的优缺点 二.RBAC权限分配 1. RBAC的功能模块 2. RBAC权限分配 ...
- 大型门户网站的RBAC用户权限管理设计
这是我在网上找的一些设计比较好的RBAC权限管理 不知道,像新浪.搜狐.网易.百度.阿里巴巴.淘宝网的RBAC用户权限这一块,都是这种细颗粒的RBAC设计开发,还是把他们像用户组.角色组.权限组.操作 ...
- 数据库管理员用户角色组权限设计
一.引言 因为做过的一些系统的权限管理的功能虽然在逐步完善,但总有些不尽人意的地方,总想抽个时间来更好的思考一下权限系统的设计. 权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新 ...
- Spring Security基于角色的权限管理
1.Spring Security 1.1核心领域概念 认证(Authentication):认证是建立主体(principal)的过程. 主体通常是指在应用程序中执行操作的用户.设备或其他系统 授权 ...
- Jenkins 中基于角色的权限管理
Jenkins 中基于角色的权限管理 原文地址: Jenkins 中基于角色的权限管理 | 超级小豆丁 (mydlq.club) 系统环境: Jenkins 版本:2.213 一.简介 Jenkins ...
- 从零开始——基于角色的权限管理01(补充)
此博文较为详细的介绍从零开始--基于角色的权限管理01文中的两个部分的流程(解释代码). 1) index.jsp中提交跳转action action的login,获取jsp页面传过来的用户名密码和验 ...
最新文章
- 日志平台(网关层) - 基于Openresty+ELKF+Kafka
- c语言学生信息系统 完整版,C语言 学生信息管理系统(完整版).docx
- shiro的简单使用
- hashmap储存有向图_如何在Rust中构建向量的HashMap?
- 一个查看Cookie的便捷工具——EditThisCookie
- Mac下svn搭建和使用方法
- vue新增属性是否会响应式更新?
- aotuwried是java的注解吗_@autowire注入为null
- 网络游戏简易分区服务器架构详解
- Allegro cadence下载安装
- 蓝宝石rx580怎么超频_【蓝宝石 RX580 8G D5 超白金 OC 显卡使用总结】游戏|界面|按钮|频率_摘要频道_什么值得买...
- python国际象棋游戏_国际象棋版AlphaZero出来了 还开源了Keras实现
- windows下使用命令打开pdf文件
- 基于数据kmeans_data分析聚类画图 使用sc轮廓系数作为评价指标
- 入手评测 锐龙r7 5825u和i5 1240p选哪个好
- php开发中常用字符串函数总结
- Qt QMdiArea和QMdiSubWindow的基本用法
- C++ Essential Training C ++基础培训 Lynda课程中文字幕
- 8小时外你做什么?下班后的生活决定你的竞争力
- 9-斐波拉契数列解法归纳
热门文章
- QuickBooks Online For Dummies, 4th Edition 免积分下载
- QuickBooks qbo api transactionlist 获取数据不全的问题
- 天龙八部手游服务器找不到了,为什么天龙八部手游同样版本,区跟服务器都会 – 手机爱问...
- 上海科技大学计算机浙江分数线,上海科技大学2020录取分数线 上海科技大学录取分数线各省汇总...
- JAVA社招,让老板心动的简历原来是这样
- UI设计存在什么意义?
- 提高spark任务稳定性的解决方案及Blacklist 机制说明解释
- python爬虫爬取当当网的商品信息
- python基本语法学习笔记
- MyBatis进行增删改查