助力软件开发企业降本增效 PHP / java源码系统,只需一次付费,代码终身使用! 广告
#### **4)RBAC3** RBAC3,它是RBAC1与RBAC2合集,所以RBAC3是既有角色分层又有约束的一种模型 ![](https://img.kancloud.cn/39/ef/39ef73b859bbce0e14360f08c25c9661_592x381.png) 场景:企业数据 适用资源:客户信息 RBAC的思想,来源于现实世界的企业结构。比如,销售角色,拥有查看客户信息的权限。当一个销售人员小王入职了,可以把销售角色赋予小王,那么小王就拥有了查看客户的权限。这种方式,避免了ACL模型下,每次新人入职,需要逐个配置资源表的情况。同样,权限变动也变得很方便,只要修改角色,即可实现多用户的权限修改。 **权限表** ~~~ 名称:创建客户 资源: 客户信息 操作:创建 名称:删除客户 资源: 客户信息 操作:删除 名称:查看客户 资源: 客户信息 操作:查看 名称:修改客户 资源: 客户信息 操作:修改 ~~~ **角色表** ~~~ 名称:销售角色 权限: 创建客户、删除客户、查看客户、修改客户 ~~~ **用户表** ~~~ 主体:小王 角色: 销售角色 ~~~ RABC并不总能满足所有权限的场景。比如,我们无法对销售角色,进行个体定制。比如,销售角色拥有创建、删除的权限。如果我们要对销售小李,去掉删除的权限。那么,我们就必须创建另一个角色,来满足需求。如果这种情况很频繁,就会丧失角色的统一性,降低系统的可维护性。 角色和组两个概念可能会让人混淆,在这里做个区分: * 角色赋予的是主体,主体可以是用户,也可以是组 * 角色是权限的集合 * 组是用户的集合 * * * ![](https://img.kancloud.cn/f8/c3/f8c3d752a7e0b5ac60894763e7505d67_1410x749.png) user | id | username | | --- | --- | | 1 | admin| | 2 | zhangsan | | 3 | lisi | | 4 | wangwu | rule | id | title|name| | --- | --- |---| | 1 | 查看用户列表 |user/user/index| | 2 | 添加用户 |user/user/add| | 3 | 编辑用户 |user/user/edit| | 4 | 删除用户 |user/user/del| | 5 | 删除多个用户 |user/user/multi| | 6 | 权限管理 |auth/rule/index| | 7 | 文章审核页面 |auth/postcheck/index| | 8 | 评论审核页面 |auth/commintcheck/index| role | id | name | rules| pid |max_role| | --- | --- | --- | --- |--- | | 1 | 超级管理员 | * | 0 |1| | 2 | 管理员1 | 1,2,3,4,5 | 1 |10| | 3 | 管理员2 | 1,6 | 1 |10| | 4 | 审核员组长 | 7,8 | 0 |1| | 5 | 评论审核员 | 8 | 4 |*| 他们是多对多关系 所以可以用中间表将他们关联在一起 user_role | user_id | role_id | | --- | --- | | 1 | 1 | | 2 | 2 | | 2 | 3 | | 3 | 4 | | 4 | 5 |