已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第16章访问控制列表 Zend Acl 访问控制列表 ACL 是应用在路由器接口的指令列表 该指令列表用来告诉路由器哪些数据包可以接收 哪些数据包需要拒绝 至于数据包是被接收还是拒绝 可以由类似于源地址 目的地址 端口号等的特定指示条件来决定 使用ZendFramework中的Zend Acl组件即可实现完整的访问控制 该组件提供了一整套实现访问控制列表 AccessControlList 的解决方案 合理使用该类组件 可以实现用户所要求的访问控制 本章就来向读者介绍如何使用Zend Acl组件实现访问控制功能 16 1资源与角色 Zend Acl组件中定义了两个重要的概念 即资源与角色 资源 Resource 是指一个被限制访问的对象 角色 Role 则是指可以发出请求来访问资源的对象 Zend Acl组件中分别以Zend Acl Role类与Zend Acl Resource类来表示资源与角色 要创建角色与资源只需要为这些类实例化对象即可 在实例化对象时 需要为资源或者角色提供参数 详情请参见本章后面的实例代码 16 1 1Zend Acl中的资源 在Zend Acl中 资源就是所有被访问对象的统称 如论坛中的贴子 新闻管理系统中的新闻等都可以被看作是资源 在Zend Acl中 创建一个资源非常简单 Zend Acl提供了Zend Acl Resource Interface接口 该接口使开发者可以非常方便的创建Resource 为了使Zend Acl把某个对象当作一个Resource 一个类只需要实现包含了一个方法getResourceId 的接口即可 另外 Zend Acl Resource是一个包含在Zend Acl里作为一个基本的Resource实现的类 开发者可以任意对其进行扩展 16 1 2Zend 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 指代所有权限 16 3ACL的高级用法 上一节所介绍的ACL访问控制只是ACL最基本的用法 而实际应用中可能需要更加精密的访问控制 去除访问控制列表中的某些规则 将控制列表中的信息进行存储以及有条件的权限等更多高级的ACL操作 本节就来简要介绍所有这些ACL的高级用法 16 3 1精细的访问控制 本章16 2节中所介绍的ACL是对指定用户访问所有资源时设定的权限 这样的设定并不一定能满足实际应用的要求 如在论坛中可能会有某一个专区 只允许固定的用户发贴子 这就牵涉到指定资源的访问控制问题 本节就来介绍下ACL更精细的访问控制 要为指定用户添加对指定的资源的某种操作的允许或者拒绝权限时 只需要使用allow 或者deny 方法的第二个参数即可 这两种方法的第二个参数都表示相应的Resource 资源 类型 可以为Zend Acl Resource类的实例或者是字符串或者数组 16 3 2移除控制规则 在使用ACL时出于某种需要 可能需要对其中定义的控制规则进行移除 这时可以通过使用ACL对象的removeAllow 方法或者removeDeny 方法 将指定规则进行移除 这两个方法的使用格式分别如以下代码所示 removeAllow role resource privilege removeDeny role resource privilege 16 3 3存储ACL到各种载体 在ZendFramework中ACL被设计为可序列化 将对象的状态信息转换为可以存储或传输的信息的过程 因此可以借用PHP中的serialize 函数 将ACL对象中的内容进行序列化 将存储在其他载体中 在使用时 通过PHP的unseriailize 函数 将内容进行反序列化即可 这两个函数的语法格式如以下代码所示 stringserialize mixedvalue mixedunserialize stringstr 16 3 4有条件的访问规则 在使用ACL时 有时出于某种特殊的需要 可能需要为访问规则设定相应的条件 如当普通用户的积分达到某个条件时 就允许其在管理区发表内容 再如限制某些IP的用户对所有资源的访问等 这时就需要用到allow 方法的最后一个参数 assert 该参数指代的是一个Zend Acl Assert Interface 在Zend Acl中使用Zend Acl Assert Interface提供支持有条件的规则 为了使用规则声明接口 开发者写了一个实现接口中assert 方法的类 16 4小结 本章为读者介绍了Z
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大医院主任医师面试常见问题
- 边坡植生棒施工方案
- 小区活动室管理制度
- 健康医疗数据安全管理方案与实施安排
- javaee在线考试课程设计
- 2026年春季学期教师教学基本功训练方案:加强基本功训练提升教学技能夯实教学基础
- 公立教师刷脸考勤制度
- XX区实验初级中学2026年春季学期教导处课后服务质量评估工作方案
- 福建三明市三元区2025-2026学年七年级上学期1月期末道德与法治试题(无答案)
- 局考勤制度细则
- 建筑工地春节后复工复产方案(通用5篇)
- 商务礼仪课件
- 港口环保培训课件
- 桥梁施工技术培训课件
- 数学地质系列-4聚类分析课件
- 康力电梯PM-DCU门机控制器说明书
- 统编人教版六年级道德与法治下册第5课《应对自然灾害》教学课件(第1课时)
- 《煤矿安全规程》专家解读(详细版)
- 工艺联锁图识读
- 宾馆酒店行业生产安全事故综合应急预案范本参考模板范本
- 第三章天文观测与天文测量2
评论
0/150
提交评论