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

.
.
.
.
.
.


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

Logo

快速构建 Web 应用程序

更多推荐