关于sf第二场直播 - 《Yii2之rbac(基于角色的权限管理)-- 思想与配置》 的总结

455 阅读4分钟
原文链接: t.cn

关于sf第二场直播 - 《Yii2之rbac(基于角色的权限管理)-- 思想与配置》 的总结

干货社区 原创 1小时前

正文之前先说句号外:《讲堂 "Yii2之rbac(基于角色的权限管理)-- 思想与配置"》兄弟连VIP提交免费表单的伙伴,今天将全部给大家返款回去,免费看直播。

昨天的直播进行了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 你还需要新建一个继承于yii\rbac\Rule的子类并且实例化后传递给 authManager组件才可以,这个如果不明白建议回顾下昨天直播的后半部分,sf上所有直播都可以回放和再次订购看回放。

总体来说yii的rbac很简单。

一个例子

最开始我想过很多例子,后来决定还是用官方文档中的了,但是对于很多初学者可能对这个例子以及一些提示要注意的地方,不了解为何要注意。

所以直播的后半段就是对这个例子进行了一行一行的代码重现,编写过程中进行讲解,遇到要注意的地方进行说明。

我个人比较喜欢这样的形式,有时候我们学了很多,但是仍然不会写代码,就像linux之父linus说的那句话

空谈是不值钱的。给我看你的代码就好。

无论我们在程序员的哪个阶段,代码是我们唯一的名片,直播亦然,以后的直播中也会一直延续这个思路。

最后

这是yii rbac的第一节,算入门,我们下一节将讲解一个叫做acf的东西,你可能不知道它,但是你一定见过它,各位伙伴记得报名哦(发哥说:反正tmd的是免费的,不报白不报^^^^^^^^^^)