rbac: 一种数据库设计思想,根据设计数据库设计方案,完成项目的权限控制。
经常需要添加权限的场景
1.1 不同用户登录后看到的菜单是不一样的.
1.2 不同用户看到的页面效果不一样
1.2.1 有的用户可以看见”授权”按钮,或有的用户可以看见”删除”按钮
1.3 不同用户完成的功能是不一样的.
1.3.1 有的用户可以执行删除,有的可以执行新增.
学习RBAC需要掌握的两项
2.1 如何设计数据库中表
2.2 如何根据数据库完成项目
RBAC核心是角色,在数据库设计时一定有角色表.其他的表是根据具体需求看是否添加.
传统数据库原型及其问题:
在项目开发过程中,我们对网页的菜单都是直接声明写死的,即每个人只要访问了此页面看到的内容就是相同的,具有的权限也是相同的。如果我们需要修改菜单的名字或者菜单跳转的页面就必须对网页作出修改,非常麻烦。如果项目已经有用户使用了这种菜单声明方式,在修改时就会造成功能不可用。
解决方法:
出现这种问题的原因是我们在创建网页时就将网页的基本功能写死,导致网页的功能和网页的耦合性过高,这时我们就可以通过RBAC思想来解决此问题,将用户所拥有的的菜单信息权限存放到数据库中,从而实现网页与功能的解耦。
实现:
菜单信息表存储菜单信息:菜单id,菜单名,菜单的url地址,菜单的层级,以及菜单的描述
角色表存储信息:角色名称,角色id,以及关于角色的描述
角色菜单信息表:角色id,菜单id
用户信息表:用户id,密码,角色id