- 若依框架的权限管理功能是基于【RBAC】来实现的,即:系统中所有的权限,都是基于角色来控制的。
- 框架对权限的控制,不仅支持菜单的功能,还支持菜单中的每一个按钮的权限控制
RBAC(基于角色的访问控制)模型包含的表有下面五张:
1、用户表 2、角色表 3、菜单表 4、用户角色关联表 5、角色菜单关联表
其5张图的关系如下:
{
关于表的杂谈:
表的关系大致可以分为一对一、一对多以及多对多这三种类型;其中若有一对多的情形,则多的那部分必然要生成一个外键,以保证和一那张表进行联系;若有多对多的情形,则必然会存在一个中间表
}
{
关于如何用sql语句进行联表查询:
// 查询当前登陆人所拥有的权限菜单数据(登陆人ID:2)
// 在编写sql语句时一定要坚持的一个原则:分清主表与辅表
// 因为这里想得到登陆人所拥有的菜单,因而这里菜单表为主表
1、select * from sys_menu t1
// 因为仅有菜单表无法获取到何人是登陆人,因而需要与中间表进行关联(通过两表的共项)
2、select * from sys_menu t1left join sys_role_menu t2 on t1.menu_id = t2.menu_id
// 但此时知道user_id,根据以查的信息中role_id无法定位到user_id,因而还需要进一步进行联表查询
3、select * from sys_menu t1left join sys_role_menu t2 on t1.menu_id = t2.menu_idleft join sys_user_role t3 on t2.role_id = t3.role_id
// 最后再利用已知的user_id条件进行查询
4、select * from sys_menu t1left join sys_role_menu t2 on t1.menu_id = t2.menu_idleft join sys_user_role t3 on t2.role_id = t3.role_id where t3.user_id = 2
}