yii2权限控制rbac之rule详细讲解
来源:互联网 发布:和知乎类似的平台 编辑:程序博客网 时间:2024/05/06 10:36
作者:白狼 出处:http://www.manks.top/yii2_rbac_rule.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
在我们之前yii2搭建后台以及rbac详细教程中,不知道你曾经疑惑过没有一个问题,rule表是做什么的,为什么在整个过程中我们都没有涉及到这张表?
相信我不说,部分人也都会去尝试,或百度或google,到头来也会竹篮打水,这部分讲解的内容少之又少啊!
对于一般的权限系统而言,我们之前做的rbac一般情况下是足够的,即时没有rule,相信你也能实现我们用rule实现的功能。
我们就以官网的例子给出一个具体的操作教程,看看这个神秘的rule到底是做什么的!
看需求:
我们有管理员和普通用户,对于文章系统而言,我们允许管理员对文章的任何操作,但是只允许普通用户创建文章和修改自己创建的文章,注意哦,是允许其修改自己创建的文章,不是不允许修改文章,也不是修改所有的文章!
看yii2 rbac rule怎么去实现,重点是教大家怎么去使用这个rule,也解开众多人心中的节!
在我们添加rule之前,需要先实现 yii\rbac\Rule类的execute方法。
<?phpnamespace backend\components;use Yii;use yii\rbac\Rule;class ArticleRule extends Rule{ public $name = 'article'; public function execute($user, $item, $params) { // 这里先设置为false,逻辑上后面再完善 return false; }}
接着,我们才可以去后台rule列表(/admin/rule/index)添加rule。具体添加方式可参考下方截图
(图片见原文)
注意,上面这一步很多人会死在类名的添加上,记得加上我们ArticleRule文件所在的命名空间!
我们看第三步,该步骤也是很容易出错的地方!该篇教程请注意集中精力,前方高能!
我们访问权限列表(/admin/permission/index)新增权限,该权限只针对文章的修改,随后我们将其分配给用户所属角色
需要注意了,此处严重警告,这里新增加的权限所控制的路由也就是文章的更新操作(/article/update)分配给当前用户仅且一次,重复分配当前操作给所属角色或用户,可能造成rule失效,失效原因则是覆盖!
此刻再次刷新文章的更新页面(/article/update/1),很显然直接给我们了403 forbidden没权限访问的提示,也就是我们刚刚添加的rule生效了!如果此刻没生效,请检查上面所说的两个注意点!
然后我们实现ArticleRule::execute方法内业务逻辑,可参考如下:
[考虑目前国内网站大部分采集文章十分频繁,更有甚者不注明原文出处,原作者更希望看客们查看原文,以防有任何问题不能更新所有文章,避免误导!]
继续阅读
- yii2权限控制rbac之rule详细讲解
- Yii2 rbac权限控制之Rule实现及应用详解
- yii2 rbac权限控制之菜单menu详细教程
- Yii2 rbac权限控制 详细说明
- yii2 rbac权限控制详细操作步骤
- yii2搭建完美后台并实现rbac权限控制案例 - 之权限控制详细操作步骤
- yii2搭建完美后台并实现rbac权限控制案例 - 之菜单menu详细教程
- yii2.0 rbac权限控制
- Yii2 rbac权限控制详解
- Yii2全面解析之权限管理RBAC
- yii2-rbac权限设置
- Yii2-权限控制RBAC实战篇(一)
- Yii2-权限控制RBAC-理论篇(一)
- Yii2-权限控制RBAC-应用篇(二)
- Yii2-权限控制RBAC-实例篇(三)
- YII2框架RBAC 自己开发(权限控制)实例运用
- yii2搭建完美后台并实现rbac权限控制实例教程
- Yii2搭建后台并实现rbac权限控制完整实例教程
- android 动画 之 属性动画
- DataTables服务器端分页
- 提交AppStore审核总有意外出现?美团被下架
- android中新的布局ConstraintLayout
- 互联网自由工作者必须要知道的七点
- yii2权限控制rbac之rule详细讲解
- python画图包seaborn和matplotlib中文字体显示(针对windows系统,,使用ipython notebook)
- 加速linux设备启动速度
- Java 项目优化实战
- Dubbo-Fail to decode request due to: RpcInvocation
- C++中的C_str()函数用法
- $_FILES函数详解
- 解析pdf文档的字体是否嵌入、索引图、页数、内文尺寸
- power mock 入门介绍及使用示例