1.概念
RBAC即Role Based Access Control,意为基于角色的访问控制。用户与角色相关联,当用户在系统进行注册时可以选择成为某一角色从而拥有这个角色的权限,当然新注册的用户的权限也可以由上一级用户授予如管理员认定某个用户为某个角色就授予了该普通用户对应角色得权限。用户与权限的逻辑分离极大地简化了权限的管理。
权限:能够执行某个操作或具备操作某个事物的能力
角色:一系列权限的集合
用户、角色与权限的关系
用户 ——> 角色 ——> 权限(它们之间是映射的关系)
RBAC在权限管理问题中的作用就好比一个范式,让我们在以后处理对应的权限问题时可以直接套用RBAC的思想。
2.权限管理问题
在没有进行权限划分的页面中,所有登录的用户看到的页面内容都是一致的。但在实际业务运用中,每个页面应该有公共的部分即每个用户都能看到的部分以及某一类用户自己才能看见的部分如系统的管理员能看到管理普通用户的页面而普通用户只能看到对他提供服务的页面。毫无疑问,此时不同的用户登录系统以后他们所看到的内容以及执行的操作是有区别的。
3.权限的使用场景
不同用户登录后看到的菜单不一样
不同用户登录后看到的页面效果不一样
有的能见有的不能见
不同用户登录后能操作的功能不一样
有的能点击触发有的不能
4.实例
①在传统的权限解决方案中的解决办法
每新增一个用户,我们都要在用户表里面添加一条记录,每个用户分配n条权限,则用户关联表里要添加n条记录,最后总共要添加n+1条记录,且当以后新增某个权限或者删除某个权限时要更改许多用户记录。
②使用RBAC思想解决的办法
RBAC的核心是角色,当新增一个用户时,在用户表里添加一条记录,给新增用户分配一个角色,在用户角色关联表里添加一条记录,总共只需要新增2条记录。当以后要添加新的角色或权限时也只用更改角色表而不用改动用户表。
总结
在进行web项目开发时,使用RBAC的思想来设计数据库表。在设计数据库表时我们通常要进行逻辑数据表的设计以及功能资源表的设计,不同的用户登录web页面看到不一样的内容即是查询了功能资源表里的不同记录。使用RBAC思想设计的方案是非常灵活的。