前言
权限是系统中最常见的功能,虽然有一些Java的权限框架,其实当系统权限不是非常复杂的时候,根本用不到权限框架,如果系统中权限本身并不复杂,可以使用MySQL数据表来解决,使用权限框架就是一种过度设计
所以在此,我准备记录一种使用MySQL表的一种简单高效的权限设计方式,同志们可以参考一下
数据权限
功能
就是给每一个子用户精确到可以看到那些数据,不能看到那些数据
功能设计
创建两个MySQL表 权限组表 权限组用户关系表
权限组用户关系表
绑定权限组和用户使用的
字段
用户ID 权限组ID
权限组表
维护一个权限组里面有那些数据类型,这些数据类型中那些数据可以查看
字段
权限组ID 数据类型(如: 店铺、品牌、供应商、仓库) 具体数据ID
这样就可以查询出具体数据ID 进而维护出可以看到那些数据类型中的那些数据
功能权限
功能
常见的就是管理权限目录菜单,那些可以看,那些不能看
功能权限关系可能是各种形状的,表面上看是需要关系,如常见的树形结构 就是目录菜单
其实归根结底就是父子类型的关系
功能设计
创建两个MySQL表 权限组表 权限组用户关系表
权限组用户关系表
绑定权限组和用户使用的
字段
用户ID 权限组ID
权限组表
维护权限关系
字段
权限组ID 权限数据(使用json类型存储集合数组)
设计理念
权限之间的关系归根结底是可以在存储数据的时候维护的
比如,我们选择用户管理的时候,可以直接把用户管理下面的所有权限全部存储到权限数据字段里面
这样,我们对一个权限进行查询是否存在就直接在权限数据集合中查看一下,如果有就存在,如果没有就不存在
设计优化
这个方案存储权限数据字段有冗余,我们可以使用映射成数字或者字母的方式解决
方案优势: 简单、占用空间小、查询速度快