美文网首页mysql
数据库权限设计

数据库权限设计

作者: 辛小二 | 来源:发表于2019-03-01 14:56 被阅读0次

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

2.最简单版本

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

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

image image

角色:可以简单理解为许多权限的集合。比如二级管理员,三级管理员。

3.用户组模式

如果用户数量比较庞大,可以加入用户组模式。需要给用户分组,每个用户组内有多个用户,可以给用户授权外,也可以给用户组授权。最终用户拥有的所有权限 = 用户个人拥有的权限+该用户所在用户组拥有的权限。(这个设计类似 svn 中的用户权限,比如,将一个svn用户加入到 group中,然后设置group的权限,以后加入更多的用户,就不用再一一设置用户的权限了。)

image

4.权限分类

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

image

5.完整版

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

优点:(1)不需要区分哪些是权限操作,哪些是资源,(实际上,有时候也不好区分,如菜单,把它理解为资源呢还是功能模块权限呢?)。

(2)方便扩展,当系统要对新的东西进行权限控制时,我只需要建立一个新的关联表“权限XX关联表”,并确定这类权限的权限类型字符串。

这里要注意的是,权限表与权限菜单关联表、权限菜单关联表与菜单表都是一对一的关系。(文件、页面权限点、功能操作等同理)。也就是每添加一个菜单,就得同时往这三个表中各插入一条记录。这样,可以不需要权限菜单关联表,让权限表与菜单表直接关联,此时,须在权限表中新增一列用来保存菜单的ID,权限表通过“权限类型”和这个ID来区分是种类型下的哪条记录。

image

相关文章

  • 数据库 权限设计

    数据库 权限设计 -系统权限管理设计-通用权限管理设计 之 数据库结构设计 权限 用户 角色 组 用户表

  • 权限管理

    权限管理分为 功能权限和数据权限 功能权限: 哪些人可以做什么操作数据权限: 哪些人可以看哪些数据 数据库表设计 ...

  • java 权限设计方案分析

    方案1: 数据库设计:用户表(拥有角色id),角色表,权限表(权限标识,名称,父子层级),角色和权限关联表toke...

  • 数据库权限设计

    1设计思路 为了设计一套具有较强可扩展性的用户认证管理,需要建立用户、角色和权限等数据库表,并且建立之间的关系,具...

  • 数据库权限设计

    基于 RBAC(Role-based Access Control)权限访问控制。也就是说一个用户可以有多个角色,...

  • 小程序--数据库

    如何修改数据库权限选中数据库==>权限设置即可。。。。

  • 设计-RBAC数据库的设计与使用

    文章-如何设计数据库表实现完整的RBAC(基于角色权限控制)【RBAC】打造Web权限控制系统 推荐两个组件 ar...

  • 数据库平台规划

    数据库平台能力 补充:安全管控权限申请→权限审核→权限下放→权限回收 数据库集中管理 业务需求→产品&版本&网段服...

  • MongoDB - 用户与权限

    切换数据库 创建用户 所有权限 指定数据库所有权限 指定数据库指定权限 db01 和 db02 库读写权限,其他库...

  • Oracle_Day03

    权限 系统权限:用户对数据库的相关操作权限 我通过system不仅要赋予user1登录到数据库的权限,还要...

网友评论

    本文标题:数据库权限设计

    本文链接:https://www.haomeiwen.com/subject/tlmruqtx.html