Yii 框架中基于角色的访问控制-rbac基于角色的访问控制( Role-Based Access Control ),是一种简单的而又强大的集中访问控制。基于Yii Framework 的 authManager 组件实现了分等级的 RBAC,能够帮助我们解决开发中遇到一些资源控制访问的问题。 Yii的rbac,从开始安装arbc模块扩展,到调试分析其原理,断断续续地也花了不少时间。当然你了解它后,你会发现,yii的abrc是多的方便,可以让你轻松实现资源控制访问,非常强大。现在就整理下学习笔记,分享一下。虽然authMangner组件实现了rbac,但是没有实现可视化编辑管理。目前官方有Srbac 和 Right两个比较好的扩展模块,我们用它们非常方便的可视化管理角色(roles),任务(tasks),操作(operations)。
它们的界面操作风格如下:
对于这两个扩展模块,其实功能都差不多的,只是界面上的不同。看个人喜欢什么风格,就选择那个模块测试。至于安装调试,你只要下载它们,里面有详细介绍。下面我们分析下authManager 组件实现的原理。 授权项目,就是判断一个用户是否允许操作特定的资源,通过检查用户是否属于有权限访问该项资源的角色来判断。这里我们要明白,授权项目,角色,任务,操作之间的关系。 1.授权项目可分为,角色,任务,操作; 2.角色可以由若干个任务组成; 3.任务可以有若干个操作组成; 4.操作就是一个许可,不可在分。 这里也还要提到,业务规则问题,它其实就是一段php代码,在检查权限的时候会被执行。
下面我们分析下rbac实现中,需要三张表:authassignment、authitem、authitemchild的结构:
使用验证方法CWebUser::checkAccess(),下面用一段demo code说明:
下面就演示一下具体的一个用户删除文章的操作:
结语:对于yii框架,还是有很多需要学习和挖掘的,就arbc来说,也是一个非常不错的组件。对于资源控制访问来说,简单而有强大,在web开发中也是一种可以选择的解决方案。 |
|