某个用户登录进去,能看到哪些菜单,能操作哪些按钮。#菜单树#
1,表
1.1)表设计
用户表-
select * from csms_user where user_name = 'plant02'
用户角色表-
select * from csms_user_role where user_id = 998 96
角色表-
select * from csms_role where id = 96
角色菜单表-
select * from csms_role_menu where role_id = 96
菜单表-
select * from csms_menu where id in(999999, 120000, 120100, 120101,120102,120103,120104,120200,120201,120300,120301)
菜单权限表-
select * from csms_menu_auth where menu_id in(999999, 120000, 120100, 120101,120102,120103,120104,120200,120201,120300,120301)
权限表-
select * from csms_auth where id in(988,987,986,985,989,984,983,982,981,980,979,967,966,965,962)
1.2)关系:用户:角色:菜单:权限 1:n:n:n
1.3)表结构说明
1.3.1)菜单表,权限表,如下图,在此注意菜单跟权限直接关联,一个菜单对应多个权限(比如增,删,改,上报)
字段说明:
url:菜单表中权限url实际没用,用的是权限url,保存的接口路径
parent_id:父菜单ID,表面菜单是一个树形结构
type:0:菜单 1:按钮
3.2) 如果把菜单表,菜单权限表去掉,只保留 用户,角色,权限三者间关系。相当于菜单表和权限表合并,权限表结构如下图
2,用户,菜单,权限控制
2.1菜单结构
通过两个用户具有不同操作权限对比说明问题
用户1:主机厂用户
如下图,购车方案申请(查询,创建,修改,删除,上报);待审批方案(查询,撤销);已发布方案(查询,查看详情)的功能
用户二:沈明,审批方案
审批方案(审批),已发布方案(查询,查看详情)
2.2对比分析
通过对比主机厂用户和沈铭用户可以得出,不同之处在于,二级菜单购车方案申请(主机厂用户增删改查上报);待审批方案(主机厂只能撤销,沈铭可审批)
3, 数据分析如何实现
3.1 菜单,按钮实现
3.1.1 主机厂菜单,按钮
3.1.2 沈明菜单,按钮
对比可以看出沈铭用户没有审批上报菜单,具有审批方案按钮,无审批撤销按钮(主机厂相反)
3.2菜单,权限如何关联
如下图,菜单-待审批方案(120200)对应四种权限(981,982,983,984),(查询,撤销(主机厂),同意,反对(沈铭))
菜单权限表
3.3 权限
上面说明了,用户,菜单,按钮问题,解决了看得见的问题,而每个菜单或按钮都提供了一个接口,可以直接调用,那权限表有什么用?答案是:鉴权。否则每个用户拿到ur是否都可以调用任意接口,在zuul网关中,首先会根据用户获取所有权限,判断当前入参url,是否包含在权限内。
4,前端
用户登录进来,如何展示有能看到的菜单,按钮
java后台提供........................菜单树