zend framework提供了一个粒度较细的访问控制机制,可以让我们方便的进行权限控制,下面用一个简明的例子演示其使用方法。通过本例,
基本就能把握住ACL的常规使用了。哈哈,是不是觉得ZF真的很强大呢。
$acl = new Zend_Acl();
//添加角色
$acl->addRole(new Zend_Acl_Role('访客'));
$acl->addRole(new Zend_Acl_Role('注册用户'),'访客');
$acl->addRole(new Zend_Acl_Role('内部用户'),'注册用户');
$acl->addRole(new Zend_Acl_Role('编辑'),'内部用户');
$acl->addRole(new Zend_Acl_Role('管理员'),'编辑');
//添加资源
$acl->add(new Zend_Acl_Resource('查看普通新闻'));
$acl->add(new Zend_Acl_Resource('查看收费新闻'));
$acl->add(new Zend_Acl_Resource('查看内部新闻'));
$acl->add(new Zend_Acl_Resource('添加与编辑新闻'));
$acl->add(new Zend_Acl_Resource('后台管理'));
//给角色赋权限
$acl->allow('访客','查看普通新闻','读');
$acl->allow('注册用户','查看收费新闻','读');
$acl->allow('内部用户','查看内部新闻','读');
$acl->allow('编辑','添加与编辑新闻','读');
$acl->allow('编辑','添加与编辑新闻','写');
//$acl->deny('编辑','查看普通新闻','读');
/* if($acl->isAllowed('编辑','查看普通新闻','读')){
echo "有";
}else{
echo "无";
}
echo "<br />";*/
$acl->allow('管理员','后台管理','读');
$acl->allow('管理员','后台管理','写');
//演示例外
$acl->deny('内部用户','查看收费新闻','读');
//显示结果
//$user=new user();
//$user->role;
echo "管理员查看普通新闻:";
echo $acl->isAllowed('管理员', '查看普通新闻','读') ? '允许' : '禁止';
echo "<br />";
echo "管理员查看收费新闻:";
echo $acl->isAllowed('管理员', '查看收费新闻','读') ? '允许' : '禁止';
echo "<br />";
echo "访客添加与编辑新闻:";
echo $acl->isAllowed('访客', '添加与编辑新闻','写') ? '允许' : '禁止';
echo "<br />";
echo '内部用户查看收费新闻:';
echo $acl->isAllowed('内部用户', '查看收费新闻','读') ? '允许' : '禁止';
echo "<br />";
echo "管理员添加与编辑新闻:";
echo $acl->isAllowed('管理员', '添加与编辑新闻','写') ? '允许' : '禁止';
echo "<br />";
//删除前面定义的规则
$acl->removeAllow('编辑','添加与编辑新闻','写');
echo "管理员添加与编辑新闻:";
echo $acl->isAllowed('管理员', '添加与编辑新闻','写') ? '允许' : '禁止';
echo "<br />";
//删除前面定义的规则
$acl->removeDeny('内部用户','查看收费新闻','读');
echo "<br />";
echo '内部用户查看收费新闻:';
echo $acl->isAllowed('内部用户', '查看收费新闻','读') ? '允许' : '禁止';
echo "<br />";
echo '管理员查看收费新闻:';
echo $acl->isAllowed('管理员', '查看收费新闻','读') ? '允许' : '禁止';
echo "<br />";

