提示:此文可与【前端路由菜单面包屑实现】文章一起参考阅读,文章链接见总结
1.RBAC模型
全称:
基于角色的访问控制(Role-Based Access Control)`
原则:
后端做权限控制,前端做对应展示
通过角色和权限建立管理,再赋予用户不同的角色,来实现权限控制的目标
2.表设计
核心表:
用户表, 角色表, 菜单表, 权限表
关联表:
用户角色表, 角色菜单表, 角色权限表, 菜单权限表
3.表设计说明
-
角色表
连接用户与菜单权限的关键表
-
菜单表
二级菜单应该与对应的一级菜单做绑定(pid),菜单应有状态值表示该菜单是否可用(status)和一个状态值(也可以判断pid是否为顶级节点(0))表示该菜单是否是叶子节点(后面没有菜单了)(isLeaf)
-
权限表
权限表可做类型区分,可分为菜单权限类型,页面元素权限类型和其他权限
-
用户表
用户多时可以分用户组,然后为用户组分配角色
-
用户角色表
每个用户应拥有一个角色
-
角色权限表
通过角色可以去找寻拥有的权限
-
菜单权限表
为权限绑定菜单,绑定子菜单即可,可用于权限树生成
假设系统只设计到菜单以及菜单按钮的权限,那用户可以查询自己角色,通过角色可以查找到自己所有的权限,通过权限可以查到所有的子级菜单(去重),然后去生成自己的菜单树(该种情况可以没有下面的用户菜单表)
-
角色菜单表(可无)
- 菜单和按钮权限分开时: 角色在绑定权限时,可以有绑定菜单选项(返回菜单树),让菜单仅跟权限绑定,这样用户就可以直接查到自己的菜单
- 菜单和按钮权限不分开时: 角色在绑定权限时,可以只绑定权限(返回权限树),然后根据树节点,取出叶子节点绑定权限(保证每个菜单都至少有一个权限,或者将没有权限表的菜单剔除),其他节点取出替换到菜单权限中
总结
emmm…哪怪怪的,这是今年写毕设的时候整理的…
相关链接:【前端路由菜单面包屑实现】前端路由菜单面包屑实现