帝国CMS模板大全
www.admin99.cn
www.92cms.cn 帝国CMS模板下载站!,情怀,养站,二次开发!源码需求比较大的一站式会员下载,价更省!!!

Yii中基于角色的访问控制(RBAC)的使用教程_自学

在开发一个有多种用户的网络应用时,对权限的判断总是一个很麻烦的事情。

Yii支持RBAC(Role-Based Access Control),结合filter,就给我们提供了非常简单方便的权限控制方法。

其实RBAC的原理很简单。

先梳理一下默认的Yii的授权filter:accessControl。它是根据accessRules按照用户的身份(users)来验证并授 权的,默认的有*(任何用户),@(通过登录验证的用户),admin(管理员)。通过一系列这些accessRules,指定了这三种身份用户的各自可 调用的action的权限。

而RBAC和默认的按照users的原理一样。通过指定]roles]来限定对应角色用户的可用action的权限。用]roles]替 换]users]即可,因为Yii的accessControl是支持roles的。通过这种方式,在Contoller内部,通过指定 accessRules就可以控制权限。在其他地方,比如控制一些view的显示的时候,可以用 Yii::app()->user->checkAccess(role)来进行权限判断。

RBAC本身也有特别之处。看官方的一段原话:
 

在Yii的RBAC的一个基本概念是authorization item (授权项目)。一个授权项目是一个做某事的许可(如创造新的博客发布,管理用户)。根据其粒度和targeted audience, 授权项目可分为operations (行动),tasks (任务)和 roles (角色)。角色包括任务,任务包括行动,行动是许可是个原子。 例如,我们就可以有一个administrator 角色,包括post management 和user management 任务。user management任务可能包括create user ,update user 和delete user 行动。为了更灵活,Yii也可以允许角色包括其他角色和动作,任务包括其他任务,行动包括其他行动。

也就是说在Yii::app()->user->checkAccess(role)的时候,role可以是operations,tasks和roles。

可能比较麻烦的就是初始化RBAC。换句话说,就是怎样才能告诉系统,我需要设定那些角色和操作等等。

这里我 使用 了一个extension叫SRBAC 。可以按照文档很轻松地将这个扩展加入到web应用中。

sbrac很不错的功能是,根据你现有的controllers能够很智能地生成tasks以及operations。同时通过图形化的界面,可以 方便地设定roles,tasks和operations的关系。这些roles,tasks.operations和他们之间的关系,都放在数据库里。

对应的数据库配置在config/main.php中:
 

‘components’=>array(

……

‘authManager’=>array(

‘class’=>’CDbAuthManager’,

‘connectionID’=>’db’,

‘itemTable’=>’rbac_items’,

‘assignmentTable’=>’rbac_assignments’,

‘itemChildTable’=>’rbac_itemchildren’,

),

……

),

表的内容很简单,一看就明白了就不多说了。srbac的使用其实也很简单,感觉也不必多说。

通过srbac,可以对现有的用户、role、task、operation进行管理。

在你自己的controller中,你也可以通过访问数据库来修改权限。

这里可以使用一个现成的model,就是srbac中的models/Assignments.php来改变用户和role的关系。比如我在新建一个用户的时候,可以:
 

$auth = new Assignments;$auth->itemname = $model->type;

$auth->userid = $model->id;

$auth->save();
 

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Yii中基于角色的访问控制(RBAC)的使用教程_自学》
文章链接:https://www.admin99.cn/7915
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
QQ站长交流群:953950264

登录

找回密码

注册