一、前言

上一篇文章我们已经大致谈过RBAC到底是什么和yii2底层RBAC接口的分析。

下面我深入理解一下RBAC权限分配,深入理解下yii2底层RBAC扩展,以及它是如何针对模块化系统的开发的?

二、介绍

2.1 下面是张大致的思维导图:

由图可见,我们对yiiRABC底层接口的扩展逻辑。

2.2 下面是数据表具体流程图:

我们扩展了四个数据表格:auth_module、auth_role、auth_role_item、auth_role_child。

2.3下面是引入的数据表结构:

auth_module表结构

Id

primary key

name(模块、功能名称)

varchar(255)

route(路由)

varchar(255)

pid

smallint(6)

create_at

bigint

update_at

bigint

status(是否已添加权限、角色)

smallint(6)  1已添加 2未添加

1

营运管理

fake/one (伪路由)

0

1555645646546

1555645646546

1

2

验卡管理

check-card/index

1

1555645646546

1555645646546

1

3

商品管理

shop/index

1

1555645646546

1555645646546

1

4

验卡

check-card/check

2

1555645646546

1555645646546

1

5

验卡

check-card/check-card-number

2

1555645646546

1555645646546

2

auth_role_child表结构

id

primary key

user_id(用户ID)

bigint    unique

role_id(高级角色ID)

bigint

create_at

bigint

update_at

bigint

1

22

2

1555645646546

1555645646546

2

25

3

1555645646546

1555645646546

3

12

1

1555645646546

1555645646546

4

55

3

1555645646546

1555645646546

5

23

4

1555645646546

1555645646546

auth_role_item表结构

role_id(高级角色ID)

bigint         primary key 联合主键

auth_item(低级角色)

varchar(255)    primary key联合主键

create_at

bigint

update_at

bigint

1

营运管理

1555645646546

1555645646546

1

验卡

1555645646546

1555645646546

1

公共管理

1555645646546

1555645646546

1

卡种管理

1555645646546

1555645646546

1

课种管理

1555645646546

1555645646546

auth_role表结构

Id

primary key

name(高级角色)

varchar(255)

company_id(公司ID)

smallint(6)

venue_id(场馆ID)

bigint

update_at

bigint

create_at

bigint

derive_id(派生角色ID)

bigint

1

营运经理

1

[12,14,59]

1555645646546

1555645646546

0

2

水吧员工

1

[12]

1555645646546

1555645646546

1

3

CEO

1

[12,14,16,19,20,28,49,55,54,58,53]

1555645646546

1555645646546

0

4

团教经理

1

[12,14,59]

1555645646546

1555645646546

0

5

吧台员工

1

[12]

1555645646546

1555645646546

1

模块 =》 子模块 =》 功能    ;  我们动态的为RBAC基础表,添加权限和基础角色, 模块表中的name是auth_item中的基础角色名称。模块中的路由,则是auth_item中权限的名称。然后,基础角色和权限建立关系。分配好模块,添加过基础角色和权限,并建立关系后,

下一步,我们创建高级角色,给高级角色添加属性,如:组织架构等。创建好高级角色后,我们需要把低级角色绑定给我们的高级角色。好了,一切都准备就绪,我们就可以把用户绑定给我们的高级角色。注意,上一篇RBAC中说到,在模块化的系统中,由于菜单、模块、功能、以及页面元素过多,导致的RBAC在分配用户时,导致的基础角色过多问题。我们这里做了一套独有的解决方案,即:派生规则。我们可以拿到一个高级角色的权限,然后往下派生低级角色,基础高级角色pid是0,这样清晰明了了公司高层到基层的层级关系,

例如:总经理(高级角色);我们可以拿到它的权限,往下派生。总经理=》副经理=》负责人=》组长等等角色和权限。

 三、尾语

好了,yii2的RBAC权限到这就结束了,小伙伴们有什么建议和疑问可以在下面评论留言,如需转载请注明作者和来源,支持原创。

最新文章

  1. redis安装及基础操作(1)
  2. Swift - 推送之本地推送(UILocalNotification)添加Button的点击事件
  3. 多进程、协程、事件驱动及select poll epoll
  4. 说说oracle中的面向对象与面向集合
  5. Codeforces Round #205 (Div. 2)
  6. login控件“您的登录尝试不成功。请重试”的解决方法
  7. NoRouteToHostException
  8. webpack开发与生产环境配置
  9. javascript获取系统时间
  10. asp.net core 二 Nginx Supervisor 负载,监听
  11. Python支付宝在线支付API
  12. JS绑定带参数的事件总要执行一次方法,如何避免?
  13. (后端)SpringMVC提交数组时不能超过256个值(转)
  14. linux--- python3环境部署篇
  15. VS项目平台的x86,x64,Any CPU以及Debug和Release
  16. C语言中猴子吃桃问题
  17. Android Studio 视图解析
  18. 用JDK自带的监控工具jconsole来监控程序运行
  19. Android 职业路上--只要还有一丝希望,不到最后一刻,不要轻言放弃--从屌丝到进入名企
  20. mvn在线仓库搜索

热门文章

  1. Tiled 地图编辑器使用教程-官方demo
  2. MySQL中的information_schema
  3. Java基础入门 - 三种注释及文档注释详解
  4. POS开发问题 - 输入非数字弹出提示框的实现
  5. css多行文本溢出显示省略号
  6. centos7 gearmand-1.1.15打包rpm
  7. Ehcache的配置与使用
  8. 带来全新的网络格局---html5
  9. MySQL入门很简单: 3 操作数据库
  10. IOS 拼接按钮文字