第16章__访问控制列表(Zend_Acl).ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第16章__访问控制列表(Zend_Acl)

第16章 访问控制列表(Zend_Acl) 访问控制列表(ACL)是应用在路由器接口的指令列表。该指令列表用来告诉路由器哪些数据包可以接收、哪些数据包需要拒绝。至于数据包是被接收还是拒绝,可以由类似于源地址、目的地址、端口号等的特定指示条件来决定。使用Zend Framework中的Zend_Acl组件即可实现完整的访问控制。该组件提供了一整套实现访问控制列表(Access Control List)的解决方案。合理使用该类组件,可以实现用户所要求的访问控制。本章就来向读者介绍如何使用Zend_Acl组件实现访问控制功能。 16.1 资源与角色 Zend_Acl组件中定义了两个重要的概念,即资源与角色(有一定权限的事物)。资源(Resource)是指一个被限制访问的对象;角色(Role)则是指可以发出请求来访问资源的对象。Zend_Acl组件中分别以Zend_Acl_Role类与Zend_Acl_Resource类来表示资源与角色。要创建角色与资源只需要为这些类实例化对象即可。在实例化对象时,需要为资源或者角色提供参数(详情请参见本章后面的实例代码)。 16.1.1 Zend_Acl中的资源 在Zend_Acl中,资源就是所有被访问对象的统称。如论坛中的贴子、新闻管理系统中的新闻等都可以被看作是资源。在Zend_Acl中,创建一个资源非常简单。Zend_Acl提供了Zend_Acl_Resource_Interface接口,该接口使开发者可以非常方便的创建Resource。为了使Zend_Acl把某个对象当作一个Resource,一个类只需要实现包含了一个方法getResourceId()的接口即可。另外,Zend_Acl_Resource是一个包含在Zend_Acl里作为一个基本的Resource实现的类,开发者可以任意对其进行扩展。 16.1.2 Zend_Acl中的角色 与资源相对应,在Zend_Acl中,角色就是所有进行访问对象的统称。如论坛中的各种用户贴子、新闻管理系统中的新闻创建者与管理者等都可以被看作是角色。Role(角色)与Resource(资源)一样,其创建过程也非常简单。Zend_Acl提供了Zend_Acl_Role_Interface接口方便开发者创建Roles。为了使Zend_Acl把某个对象当作一个Role,一个类只需要实现这个只包含了一个方法getRoleId()的接口。与Zend_Acl_Resource一样,Zend_Acl_Role也是一个包含在Zend_Acl里作为一个基本的Role实现的类。 16.2 创建并使用访问控制列表 在介绍完了资源与角色之后,本节就来介绍如何创建并使用ACL(访问控制列表)。通常这一使用过程包括以下几步:创建ACL、注册角色、定义访问控制以及查询ACL等。本节就这几步分别为读者作介绍。 16.2.1 创建ACL 从本章引言中对访问控制列表的定义可以看出,ACL可以表示任何一组物理或虚拟对象。为了便于理解,这里将创建一个基本的论坛(BBS)的ACL,该ACL将维护若干个等级的组。为创建一个新的ACL对象,可以使用new关键字直接不带参数地实例化这个ACL类。 16.2.2 注册角色及定义访问控制 本节来介绍如何向已有的ACL中注册角色。要将指定的角色注册到访问控制列表中,可以使用访问控制列表实例的addRole()方法,该方法的语法格式如下所示。 addRole($role,$parentrole); allow($role,$resource,$privilege,$assert); deny($role,$resource,$privilege,$assert); 论坛系统的用户通常需要一个分级的权限系统来决定其用户的授权能力。如,“Guest”(未注册用户)组允许有查看的权限;“User”(注册用户)有查看、发表、编辑的权限;“Moderator”(版主)组有查看、发表、编辑、删除等权限;而“Administrator”(管理员)组的任务包括所有其他组的内容并包括敏感的信息、用户管理、后台配置数据和备份/导出等。 16.2.3 查询ACL状态 使用ACL对象的isAllowed()方法可以对指定角色是否有指定权限进行查询。该方法将会根据指定角色是否有某操作的权限而返回相应的布尔值。使用格式如以下代码所示。 isAllowed($role,$resource,$privilege); 以上代码中参数$role为指定的角色,可以为角色类型、字符串或者数组,默认为null;$resource为指定的资源,也可以为资源类型、字符串或者数组默认为null,指所有资源;参数$privilege为指定的权限,可以为字符串或者数组,默认的值为null,指代所

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档