一、前言

上一篇文章我们已经大致谈过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权限到这就结束了,小伙伴们有什么建议和疑问可以在下面评论留言,如需转载请注明作者和来源,支持原创。

深入理解yii2之RBAC(模块化系统)的更多相关文章

  1. 深入理解JVM(③)Java模块化系统

    前言 JDK9引入的Java模块化系统(Java Platform Module System ,JPMS)是 对Java技术的一次重要升级,除了像之前JAR包哪有充当代码的容器之外,还包括: 依赖其 ...

  2. phpcms中的RBAC权限系统

    PHPCMS中的RBAC权限系统主要用到了4张数据表:管理员表,角色表,菜单表,菜单权限表.先来看看数据库的数据表结构: admin 管理员表 ID 字段 类型 Null 默认 索引 额外 注释 1 ...

  3. 使用 UML 进行业务建模:理解业务用例与系统用例的相似和不同之处

    使用 UML 进行业务建模:理解业务用例与系统用例的相似和不同之处   作者:Arthur V. English 出处:IBM   本文内容包括: 背景 业务用例模型与系统用例模型有什么相似之处? 业 ...

  4. TP支持菜单动态生成RBAC权限系统数据库结构设计方案

    最简单基于RBAC权限系统数据库结构设计 包括如下几个表 1. 用户表 -- Table "t_user" DDL CREATE TABLE `t_user` ( `id` int ...

  5. 深入理解OSGI:Java模块化之路

    简介 Java可能是近20年来最成功的开发技术,因其具备通用性.高效性.平台移植性和安全性而成为不同硬件平台理想的开发工具.从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Jav ...

  6. Unity3D_05_理解Unity的新GUI系统(UGUI)

    理解Unity的新GUI系统(UGUI) Unity GUI 链接:UnityEngine.UI系统基础类架构图  Unity GUI 链接:UnityEngine Event & Event ...

  7. yii2 开源插件与系统

    yii2干货集:https://github.com/forecho/awesome-yii2 商城 samdark/yii2-shop composer global require "f ...

  8. 【Unity3D基础教程】给初学者看的Unity教程(六):理解Unity的新GUI系统(UGUI)

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点推荐.谢谢! 理解UGUI的基础架构 UGUI是Unity在4 ...

  9. Java 9 揭秘(2. 模块化系统)

    文 by / 林本托 Tips 做一个终身学习的人. 在此章节中,主要介绍以下内容: 在JDK 9之前Java源代码用于编写,打包和部署的方式以及该方法的潜在问题 JDK 9中有哪些模块 如何声明模块 ...

随机推荐

  1. Oracle 内置函数

    三. 字符函数(可用于字面字符或数据库列) 1,字符串截取 select substr('abcdef',1,3) from dual 2,查找子串位置 select instr('abcfdgfdh ...

  2. ssh无法连接到虚拟机linux系统

     一般ssh连不上虚拟机是防火墙没有放行22端口,用如下命令:(安装ssh服务时应该是放行了22端口的,如果没有则需手动放行22端口)   放行22端口: sudo iptables -I INPUT ...

  3. 权限修饰符(public、protected、default、private)权限验证

    一.测试方法 在authorityTest包中建类AuthorityValidate package authorityTest; public class AuthorityValidate { p ...

  4. cf914F. Substrings in a String(bitset 字符串匹配)

    题意 题目链接 Sol Orz jry 和上一个题一个思路吧,直接bitset乱搞,不同的是这次有了修改操作 因为每次修改只会改两个位置,直接暴力改就好了 #include<bits/stdc+ ...

  5. css float布局--右侧上部固定下部自适应大小

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Linux 学习 二, 安装JDK

    我是利用在window环境下载好JDK,然后传到VMware中linux中 下载JDK http://www.oracle.com/technetwork/java/javase/downloads/ ...

  7. [原创]在Debian9上配置NAS

    序言 此教程安装的都是最新版本的.由于是当NAS让它非常稳定的运行,所以能不安装的软件尽量不要安装. 一.准备工作 1. 更新系统 没啥,就他喵想用个最新的. apt update && ...

  8. php的yii框架开发总结7

    protected\config\main.php是整个网站中很重要的一个文件,引用文件,连接数据库,默认页面等都是在这里设置: 'import'=>array( 'application.mo ...

  9. gitlab安装详解

    官方网站---https://www.gitlab.com.cn/downloads/ 1.选择操作系统 例如:CentOS6.CentOS7.Ubuntu12.04.Ubuntu14.04等,选择相 ...

  10. Sublime插件支持Sass编译和Babel解析ES6 & .sublime-build文件初探(转载自imwtr)

    原文请看:http://www.cnblogs.com/imwtr/p/6010550.html   用Sublime Text蛮久了,配置配来配去的,每次换电脑都得重头再配过,奈何人老了脑子不中用了 ...