原网址:1个用户只属于一个角色包含多个权限

原网址:1个用户只属于一个角色包含多个权限

1 一个用户只属于一个用户组

2 一个角色包含多个权限,

3 一个用户本身(非继承)可以拥有多个角色和多个权限

4 一个用户组可以有多个角色、多个权限

5 一个权限也可以属于多个角色。

6 用户的角色和权限由两部分组成。 一部分继承自所有父用户组的角色和权限,另一部分来自专门分配给它的角色和权限。

7 用户组可以排除角色rbac角色权限表设计,一旦该角色被包含在其子用户组或用户上,该用户或用户组将重新获得该角色。

8 用户或用户组可以拒绝(不允许)某个权限。 一旦被拒绝技能特效,无论哪里允许(允许),都无济于事。

9 管理员可以做任何事情,没有任何限制

10 用户组是用户的集合,角色是权限的集合。

=================================================== =========================================

基于RBAC(Role-based Access Control)的权限访问控制。 也就是说,一个用户可以有多个角色,一个角色可以有多个权限。 通过分离角色和权限,提高了设计的可扩展性。 通常,一个用户有多个角色,一个角色也属于多个用户。 (多对多),一个角色拥有多个权限,一个权限也属于多个角色(多对多)。

2.最简单的版本

假设:我们得到一个用户对象,

可以通过:用户id –> 角色id –> 角色名(什么角色) –> 权限id –> 权限标识 –> 来获取权限。 最终获得获取角色信息的权限。

rbac角色权限表设计_角色权限模型_角色权限管理设计

rbac角色权限表设计_角色权限模型_角色权限管理设计

角色:可以简单理解为很多权限的集合。 例如二级管理员和三级管理员。

3.用户组模式

如果用户数量比较多,可以加入用户组模式。 需要对用户进行分组。 每个用户组中有多个用户。 除了对用户进行授权外,还可以对用户组进行授权。 最终用户拥有的所有权限=单个用户拥有的权限+用户所属用户组拥有的权限。 (这个设计和svn中的用户权限类似3D道具,比如将一个svn用户添加到一个组,然后设置该组的权限,如果以后添加更多的用户,就不需要一一设置用户权限了)一。)

角色权限模型_角色权限管理设计_rbac角色权限表设计

4.权限分类

大部分是针对功能模块的,如信息记录的增删改查(信息状态的修改、文件的删除和修改等)、菜单的访问、输入框、按钮的可见性、是否新建下级等有些权限设计会将功能操作视为一类,将文件、菜单、页面元素等视为另一类,从而形成“用户-角色-权限-资源”的授权模型。 在做数据表建模时,可以对功能操作和资源进行统一管理,即直接与权限表关联起来,这样可能会更加方便,并且具有可扩展性。

角色权限管理设计_角色权限模型_rbac角色权限表设计

5.完整版

请注意,权限表中有“权限类型”一栏。 我们根据其值来区分它是哪种类型的权限。 例如“MENU”表示菜单的访问权限,“OPERATION”表示功能模块的操作权限,“FILE”表示文件修改权限,“ELEMENT”表示页面元素的可见性控制等。

优点:(1)不需要区分哪些是权限操作,哪些是资源(其实有时候很难区分,比如菜单,我们应该理解为资源还是功能模块权限?)。

(2)方便扩展。 当系统想要控制新事物的权限时,我只需要新建一个关联表“权限XX关联表”rbac角色权限表设计,并确定该权限的权限类型字符串即可。

这里需要注意的是,权限表与权限菜单关联表、权限菜单关联表与菜单表之间是一一对应的关系。 (同样适用于文件、页面权限、功能操作等)。 也就是说,每次添加菜单时,都必须同时向这三个表中各插入一条记录。 这样就不需要权限菜单关联表,直接将权限表与菜单表关联起来。 这时候就必须在权限表中添加一个新列来保存菜单的ID。 权限表是通过“权限类型”和这个ID来区分的。 该类型下有哪些记录。

rbac角色权限表设计_角色权限管理设计_角色权限模型

文章来源:https://blog.csdn.net/u010730870/article/details/91490705