随着spring cloud项目越做越多,接触到很多以前没接触过的知识。
这次接触到的是权限管理方面的任务。
我涉及到的权限管理分为一下几种:
1、菜单权限
2、角色权限
3、接口权限
4、数据权限
无论是什么类型的权限,数据库的设计极为重要!!
这次先分享一下菜单权限、角色权限的实现以及数据库的设计
首先是菜单的数据库设计:
| 字段名 | 类型 | 注释 |
|---|---|---|
| menu_id | int | 菜单Id |
| menu_name | varchar | 菜单名称 |
| menu_key | varchar | 菜单标识 |
| component | varchar | 菜单布局 |
| parent_id | int | 父菜单布局 |
| target | varchar | 打开方式 |
| order_num | int | 显示顺序 |
| menu_type | char | 菜单类型(M目录 C菜单 F按钮) |
| visible | int | 菜单状态(0显示 1隐藏) |
| perms | varchar | 权限标识 |
| path | varchar | 链接 |
| redirect | varchar | 重定向 |
| hidden_children | int | 强制菜单显示为Item而不是SubItem |
| hidden_header | int | 特殊 隐藏 PageHeader 组件中的页面带的 面包屑和页面标题栏 |
| create_by | varchar | 创建者 |
| create_time | datetime | 创建时间 |
| update_by | varchar | 更新者 |
| update_time | datetime | 更新时间 |
| remark | varchar | 备注 |
这边给出目录和菜单的定义:

当某个菜单定义为目录或菜单时,menu_key菜单标识和component菜单布局,一定要有!!!!他是用来前端对接使用的。如果按钮的权限要求不是那么严格,那么按钮这两个字段可以不要。
然后是角色数据库的设计:

这里参考了若依的角色权限设计,role_key角色权限字符串的作用暂时未知。
有了这两个表,以及这两张表主键的关联表之后。菜单权限就算完成大半了。接下来就是给前端提供查询菜单权限的接口了,sql语句请自行编写。
public List<ResUserMenuListVO> selectMenusByUser()
{
List<ResUserMenuListVO> menus = new LinkedList<>();
// 判断登录的角色
//如果是管理员,则显示所有菜单信息
if (AuthUtil.isAdmin())
{
menus = menuMapper.selectMenuNormalAll();
}
//如果是其他角色,就通过角色,查询出所有菜单参数
else
{
menus = menuMapper.selectMenusByUserId(AuthUtil.getCurrentId());
}
// 前端自行构造菜单树
return menus;
}

到此,就完成了菜单权限、角色权限。其他对菜单、角色的增删改查,请自行编写。这里就给出实现的关键步骤。
本文深入探讨SpringCloud项目中权限管理的实现,包括菜单、角色、接口和数据权限的数据库设计,以及菜单权限和角色权限的具体实现过程。
9190

被折叠的 条评论
为什么被折叠?



