代码说

code is poetry

代码说    
碎碎念:划破夜空,赛车让你热血沸腾!  换一换

从分页类到ACL

作者:coderzheng 发布于:2015-12-22 10:50 Tuesday 分类:php  阅读模式

我们来重温一下分页类的用途:解决数据分页显示问题。
数据为什么要分页呢,因为数据量太多,全部在一个页面中加载完并显示需要耗费的时间太长。
因此,程序员很聪明地创造了分页类来解决这个问题,就像这样:
分页类一目了然地告诉你,当前你在第几页,并且一共有多少页等信息。
那ACL又是个什么玩意呢?
ACL是Zend Framework框架中的一个模块,它的英文全程是access control list,即访问控制列表。
这个模块是用来进行角色访问控制的,比如现在有一个这样的场景:论坛有三种用户guest(普通游客)、user(注册用户)和admin(管理员),这三种用户对网站上的资源进行访问时必然具有不同的权限。ACL就能很好地完成这个过程:
1.创建ACL对象
2.注册角色(比如在几个基本论坛中的Guest、user、admin)
3.定义访问控制(给角色分配权限,比如是否可以对资源删除、浏览什么)
4.查询ACL的状态(查出访问控制列表中的某个角色对资源是否可浏览、是否可删除)
下面我们就来编写一个实际的案例:

上面的程序输出的结果是:allowed,我们来解释一下发生了什么:

最后判断这里,实际的规则是比较复杂的,因为从上面的实例可知,someUser同时存在于三个角色下,这里的规则请参考ZF2的教程:http://framework.zend.com/manual/2.3/en/modules/zend.permissions.acl.intro.html
最后我们来比较一下分页类和acl:分页类与数据是有紧密联系的。因为实际场景中,分页类中的数据来源是mysql表中存储的数据。而acl却不一样,ZF中的acl完全用php来进行处理,不与数据打任何交道。而实际场景中,应用往往有更复杂的需求,比如要求角色和权限都能动态改变(直接通过后台操作),这时候thinkphp中的rbac其实是更符合要求的。

(全文完)

标签: ZendFramework2 php

你可以发表评论、引用到你的网站或博客,或通过RSS 2.0订阅这个博客的所有文章。
上一篇: js延时执行事件实例  |  下一篇:二维数组中的排序问题