昨天的直播进行了90分钟,首先感谢大家的报名,算是把yii文档中rbac的例子讲完了,同时对数据表也进行了一些分析。
可能相对于sf上的大牛们讲座,yii2直播算很小众了,毕竟php只是众多语言中的一种,而yii又是众多php框架中的一个而已,但是这不影响我们一颗执着学习的心,这个直播要一直搞下去。
之所以写这篇文章,一是对昨天直播的一个总结,让大家对rbac有一个回顾,需要注意哪些等。二来,没有二来。
什么是rbac
这是一套权限体系,在它之前有过好多种,后来一群美国人把rbac整出来一个标准,叫做INST RBAC,yii2用的就是这个。为何rbac能成为标准且现在这么多的框架都在用那?
rbac最接近人类的各种场景。
在我们的生活中,每天都在扮演不同的角色,执行不同的权限,调用不同的资源。
昨天晚上我是一个讲师,我能在sf上和大家聊天,探讨技术,能使用sf的直播资源。
今天醒来我是一名父亲,能安静的看着熟睡中的“小核桃”,这个角色是一辈子的。
这就是生活中的rbac,老天给了很多人很多不同的角色,让他们有条不紊的在社会上生活。
rbac是严肃的,不能跨越的,你不能做不属于你的角色,比如“小三”这种角色,你不应该走到阳光之下,否则就会天下大乱,越权角色是不被允许的。
yii的rbac
我喜欢yii,不是因为它有多高级,而是在我需要它做某个事情的时候,总是能发现它已经有了完备的功能提供给我,rbac也是一样,yii对rbac进行了很好的封装,我们使用的时候无需多关注内在。
首先你要知道对于yii的rbac,有4张表你躲不过
auth_item 该表存放授权条目(译者注:即角色和权限)
auth_item_child 该表存放授权条目的层次关系
auth_assignment 该表存放授权条目对用户的指派情况
auth_rule 该表存放规则
而rbac权限的初始化过程就是对这四张表的数据填充和关系的部署。
在使用上,yii将rbac弄成了一个组件,所以你必须在config/web.php的components中有如下配置
'authManager' => [ 'class' => 'yii\rbac\DbManager',],
配置完之后使用 Yii::$app->authManager 就可以做80%的事情了,比如新建一个角色和权限,建立角色和权限之间的关系。
有一个例外,就是当你需要建立一个新规则的时候,除了 Yii::$app->authManager 你还需要新建一个继承于yiirbacRule的子类并且实例化后传递给 authManager组件才可以,这个如果不明白建议回顾下昨天直播的后半部分,sf上所有直播都可以回放和再次订购看回放。
总体来说yii的rbac很简单。
一个例子
最开始我想过很多例子,后来决定还是用官方文档中的了,但是对于很多初学者可能对这个例子以及一些提示要注意的地方,不了解为何要注意。
所以直播的后半段就是对这个例子进行了一行一行的代码重现,编写过程中进行讲解,遇到要注意的地方进行说明。
我个人比较喜欢这样的形式,有时候我们学了很多,但是仍然不会写代码,就像linux之父linus说的那句话
空谈是不值钱的。给我看你的代码就好。
无论我们在程序员的哪个阶段,代码是我们唯一的名片,直播亦然,以后的直播中也会一直延续这个思路。
最后
这是yii rbac的第一节,算入门,我们下一节将讲解一个叫做acf的东西,你可能不知道它,但是你一定见过它.