如何设计一个完美的权限管理模块

  • 日期:07-10
  • 点击:(1186)

白金娱乐会场

更常见的是基于角色的访问控制,其中用户将角色与权限相关联。简而言之,用户具有多个角色,而单个角色具有多个权限。以这种方式,构建了“用户角色许可”的授权模型。在此模型中,用户和角色之间,角色和权限之间通常存在多对多关系。如下图所示:

3eafb12224bd4b81b2f0991600796dbf

基于此,您必须首先了解角色是什么?我们可以理解它是一定数量的权限的集合,并且是权限的载体。

例如:论坛的“管理员”,“主持人”,他们都是角色。但你能做的并不完全一样。主持人只能管理版本中的帖子,用户等,这些都是权限。如果要将这些权限授予用户,则不必直接向用户授予权限。只需向用户授予“版主”角色即可。

但是通过上面我们也发现了问题,如果用户数量非常大,就要逐个授权系统的每个角色(分配角色),这很麻烦,那么你可以添加一个用户组,每个用户组中有多个用户。除了授权个人用户外,他们还可以授权用户组。通过这种方式,可以通过一次授权同时授予多个用户相同的权限,此时所有用户的权限是用户拥有的权限和用户拥有的权限之和。用户组,用户和角色之间的关系如下:

d326947a61184fa99f970920e664673e

通常在应用系统中,我们将其表达为菜单访问(页面级别),功能模块操作(功能级别),文件上传和删除,甚至页面上的按钮,图像是否可见等类别。一些权限设计将功能操作作为一个类,并使用文件,菜单,页面元素等作为另一个类,从而形成“user-role-permission-resource”的授权模型。在数据表建模中,可以以统一的方式管理功能操作和资源,即,它们直接与权限表相关联,这可以更方便且易于扩展。如下图所示:

4769a84b50c44c788514f7524fe70013

这里我们需要特别注意以下权限表,有一列“PowerType”,我们可以根据它的值来区分它,可以理解为枚举,例如“MENU”表示访问菜单“OPERATION” “表示功能模块的操作许可”,“FILE”表示文件的修改许可,“ELEMENT”表示页面元素的可见性控制。

这种设计有两个好处:

首先,不需要区分许可操作和资源。 (事实上,有时候区分起来并不容易,例如菜单,你是否将它们理解为资源或功能模块权限?);

二,方便扩展,当系统想要控制新事物的权限时,我只需要创建一个新的关联表“权限XX关联表”,并确定这种权限的权限类型字符串。

应当注意,权限表和权限菜单关联表,权限菜单关联表和菜单表都是一对一的关系。 (文件,页面权限点,功能操作是等效的)。也就是说,每次添加菜单时,都必须同时在三个表中的每一个中插入记录。

记录。最终扩展的模型完全按如下方式设计:

75e11f31823c4c29a152b03106ff5100

请注意,我在上面添加了一个额外的操作日志表;

随着系统变得越来越大,为了便于管理,如果需要,可以引入角色组来分类和管理角色。与用户组不同,角色组不参与授权。

例如,当有多个子公司且每个子公司下有多个部门时,我们可以将部门理解为角色,将子公司理解为角色组,并且角色组不参与权限分配。另外,为了便于管理和搜索上述主表本身,可以采用树结构,例如菜单树,功能树等,当然,这些可能不需要参与权利分配。

数据字典:

1.用户表:

db918bd3eab14fd2a702aa8411c5b7d1

2.字符表:

79cfbd5476c043d5bc2b9a8aa0f3377d

3.用户和角色关联表

f846c9b9308141cbb5b68988dc1d3fc6

4.用户组表

a62c52aba2d249e6bf13957440315150

5.用户组和用户信息关联表

551593d0a5b140ae8e6874c2369daf9c

6.用户组和角色关联表

5dc2a15e68a44f49aacf9d0f88f9ce54

7.菜单表

e76bdeda884648f194bec1026d505d7f

8.页面元素表

7e4cac1b3583421d95f34db710718dd3

9.文件表

c6f9ddb375c74a509ceaa5bf3ddb127f

10.许可表

858e3131fcab48179c6bdd58ef47c926

11.权限和菜单关联表

e40bca3442e149328778bfc7f2ca0b4f

12.权限和页面元素关联表

4613f08026bd4a9d98f4cb61ee9707b1

13.权限和文件关联表

292658717a0144a3b47d3fc4b2c70192

14.功能操作表

c0e490dd9c52439ebd0eefb6555a8d20

15.权限和功能操作关联表

f646fcd9ae2948408dab523a2860352b

16.角色和权限关联表

a77750a39bcc499aa417ca06a637eb46

17.操作日志表

d79a2361fd0f4b4ba9d61e3a67aa7f61