日期:2014-05-20  浏览次数:20829 次

ZendFramework学习第三章(核心组件—访问控制列表基本了解)

三四天没写博文了,那么我也不扯那么多没用的了,下边继续学习ZF,这一节给大家带来的是访问控制列表ACl的基本了解。访问控制列表,ACL!是应用在路由器接口的指令列表。看完这句我疯了,什么跟什么,完全不懂这书表达了个什么意思。继续。。该指令列表用来告诉路由器哪些数据包可以接受、哪些数据包需要拒绝。至于数据包是被接受和拒绝,可以由类似于源地址、目的地址、端口号等的特定指示条件决定。这些看不懂不要紧,懂最后边一段的就行了。

使用ZF中的Zend_Acl组件即可实现完整的访问控制。该组件提供了一整套实现访问控制列表的解决方案。本章主要的是介绍如何使用Zend_Acl组件实现访问控制功能。

资源与角色

Zend_Acl组件中定义了两个重要的概念,即资源与角色。资源(Resource)是指一个被限制访问的对象;角色(Role)则是指可以发出请求来访问资源的对象。Zend_Acl组件中分别以Zend_Acl_Role类与Zend_Acl_Resource类来表示资源与角色。要创建角色与资源只需要为这些类实例化对象即可。

Zend_Acl中的资源

Zend_Acl_Resouce是一个包含在Zend_Acl里作为一个基本的Resource实现的类,开发者可以任意对其进行扩展。

Zend_Acl还提供了一个树结构,它可以添加多个Resource。因为Resource被存储在这样一个树结构中,所以资源可以被组织成一般(树根)到特殊(树叶)。基于特殊Resource的查询将自动从Resource的等级结构中搜索并分配给祖先Resource的规则,且允许简单的规则继承。一个Resource可以从唯一的一个父Resource继承,而这个父Resource也有它自己的父Resource等。

Zend_Acl也支持基于Resource的权限(如create、read、update及delete等),开发者可以依据Resource资源分配影响全部或者特殊权限的规则。

一个Zend_Acl_Resource被创建之后,可以通过Zend_Acl对象的add()方法将其添加到访问控制列表中。

Zend_Acl中的角色

与资源相对应,在Zend_Acl组件中,角色就是所有进行访问的对象的统称,如论坛中的各种用户帖子、新闻管理系统中的新闻创建者与管理者等都可以被看作是角色。Role(角色)与Resource(资源)一样,其创建过程也非常简单。Zend_Acl提供了Zend_Acl_Role_Interface接口方便开发者创建Roles。为了使Zend_Acl把某个对象当做一个Role,一个类只要实现这个只包含了一个getRoleIId()的方法的接口。与Zend_Acl_Resource一样,Zend_Acl_Role也是一个包含在Zend_Acl里作为一个基本的Role实现的类。

在Zend_Acl中一个Role可以属于一个或者多个父Role,用户可以分别为不同的父Role分配规则,子Role将从其所有的父Role中继承规则,而不需直接为子Role分配规则。

与资源相同,一个角色被创建之后,需要使用Zend_Acl对象的addRole()方法将其添加到访问控制列表中。

自己的理解程度

上边是我一字一句的打的书上的,有的我都看不懂,对于访问控制列表呢,说直白点就是比方说有个论坛,你在没注册登录的情况下你的权限只是可以浏览别人发的帖子和回复的帖子而已,如果你注册了,你也就有了发帖子的权限,but你不能删除帖子哦。如果你当上了管理员,你就可以审核帖子,删除帖子了。把以上的关系写成一个表的话,那就是访问控制列表,什么样的角色相应的有什么样的权限。用法无非就是创建各种资源和各种角色,给每个角色分配对不同资源应有的权限。这些呢是我自己的理解,至于如何用访问控制列表,我也就是跟着书上的代码跟着打了打,至于自己在真是的项目应用暂时还没有过。所以对于访问控制列表的各种用法下一节介绍。