
2007-10-2 17:17
oftenlin
acl的问题
小弟我接触php不久,刚刚接触就学zendframework,有点困难。现在最最难啃的是acl。
先说说自己的理解,有什么不对的地方还请大家,尽快尽量详细的给于指正。。
首先,初始化acl : $this->_acl=new Zend_Acl();
然后,定义一个角色: $groupRole=new Zend_Acl_Role($this->_Session->user['group_name']);$this->_acl->addRole($groupRole);
接着,无论是读缓存也好,读库也好,找到他的资源。moudle|controller|action;
给他定义自己能访问的资源:
foreach ($resource as $k=>$v)
{
$r=new Zend_Acl_Resource($v['controller'].'.'.$v['p_name']);
$this->_acl->add($r);
}
最后用isallow来判断:$this->_acl->isAllowed($this->_wdouSession->user['group_name'], $userrequire);
第一个参数(session)根据这个参数来得到它能访问的资源的列表,如果$userrequire;属于这个列表的话,就能访问,不属于就不能访问!
是不是这样理解啊?
如果是这样的话,allow的作用是什么呢?直接把某个特殊的权限直接付给某个用户吗?也就是不用isallow来判断了吗?
大概是全部都弄错了!:L
2007-10-3 20:11
baby25910
除非开发者指明一个"allow" 规则,Zend_Acl 禁止任何 Role 对任何 Resource 的任何访问权限。
isAllowed()方法只是用来执行查询请求者在整个 web 应用里是否拥有执行功能的许可。
2007-10-25 22:06
abin30
这个里边应该就是面向对象方法了。。
前边的操作 $acl->allow(...) ;; 这些是授权,, 这个东西应该是固定存在的,可以在程序初始化的时候进行 。
当一个用户登陆,通过认证,就可以分配到角色,取得相应的授权。
后边呢,就是在你需要的时候,检查,这个用户是否已经取得授权,就可以通过$acl->isallow(); 来检查。
另外呢,就是有个继承的因素在里边。。一个角色继承另外一个角色后将自动获得该角色的所有授权。
页:
[1]
Powered by Discuz! Archiver 5.5.0
© 2001-2006 Comsenz Inc.