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

1. 五张表模型

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

编号12345
名称用户表角色表权限表用户角色关系表角色权限关系表
表名sys_userssys_rolessys_permsrel_user_rolerel_role_perm

其中:

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

2. 需求分析

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

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

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

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

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

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

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

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

在这里插入图片描述


3. 数据库设计

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

在这里插入图片描述

对应的,构建数据库表。

1. 用户表(sys_users)

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

2. 角色表(sys_roles)

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

3. 权限表(sys_perms)

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

4. 用户-角色表(rel_user_role)

iduidrid*解释
111吴敬中 -> 站长
222余则成 -> 机要室主任
325余则成 -> 站长心腹
433马奎 -> 行动处长
544米志国 -> 小喽啰
654陈北伐 -> 小喽啰

5. 角色-权限表(rel_role_perm)

idridpid*解释
111站长 -> 监听电报
212站长 -> 打电话
321机要室主任 -> 监听电报
422机要室主任 -> 打电话
531行动处长 -> 监听电报
632行动处长 -> 打电话
742小喽啰 -> 打电话
853站长心腹 -> 和晚秋谈恋爱
954站长心腹 -> 代收斯蒂庞克

4. 用户分组

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

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

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210622180219170.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NoeUxvbmVHaXJs,size_16,color_FFFFFF,t_70

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

1. 用户组表(sys_groups)

idname
1行动二科

2. 用户-组表(rel_user_group)

iduidgid*解释
141米志国 -> 行动二科
251陈北伐 -> 行动二科

3. 组-角色表(rel_group_role)

idgidrid*解释
114行动二科 -> 小喽啰

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

.
.
.
.
.
.


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

  • 20
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
RBAC(Role-Based Access Control)是一种权限管理模型,它是建立在角色的基础上,将用户分配给角色,再根据角色权限授予对应的资源访问权限。这种模型可以有效地管理大规模应用系统中的权限问题。下面是基于RBAC权限管理系统的设计分析: 1.确定系统需求:首先要确定系统的具体需求和功能,包括用户界面、权限设置和管理、角色管理、资源管理等方面。同时需要明确系统的主要目标是什么,以便在设计时保持一致性。 2.确定角色:根据系统需求,确定所需要的角色类型和数量,包括系统管理员、普通用户等。在设计时应该合理分配权限,避免角色权限重叠或漏洞。 3.确定资源:确定系统中的资源,包括数据、程序、文档等,依据资源的重要性和保密性进行分类,在角色分配时考虑资源所属角色权限。 4.权限授予:根据角色的不同,授予对应的资源访问权限,包括读取、修改、删除等。在授予权限时要严格按照角色权限定义进行操作,避免数据泄漏和滥用。 5.权限审核:对所有权限的修改和删除操作进行记录和审查,定期对权限进行审核,保证系统的安全性和稳定性。 6.权限维护:系统上线后,需要对权限进行维护和更新,包括新增角色、修改权限、删除角色等操作,同时定期对系统进行安全检查和修复漏洞。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值