php aco是什么意思
在php中,ACO是指“访问控制对象”,每个具体的ACO也有一个标识,就按照M/C/A的格式进行标识;根据具体的业务要求,ACO可以定义到某个具体的Action级别,或者Controller级别或者整个module级别。
本教程操作环境:windows7系统、PHP8版、DELL G3电脑
在php中,ACO是指“访问控制对象”。下面就简单了解一下。
ACL – 权限控制
权限控制
权限控制顾名思义就是控制什么“人”能(不能)访问什么(“操作”)。在身份认证中,我们已经知道了人是谁,现在这里就介绍yangzie如何控制这些人能做什么,yangzie是基于ACL来实现授权功能的,那么这里需要先阐明几个概念:
Access Control Object
ACO访问控制对象,也就是ARO要请求访问的对象,在yangzie中也就是M/C/A,每个具体的ACO也有一个标识,就按照M/C/A的格式进行标识,比如order模块下面的增加订单add,假如他都组织在index控制器下(index_controller),action为add;那么该ACO的标识就是:/order/index/add;
根据具体的业务要求,ACO可以定义到某个具体的Action级别,或者Controller级别或者整个module级别
Access Request Object
ARO访问请求对象,也就是要请求ACO的对象,通常他指“人”,各种各样的类型的人,每种“类型”有一个唯一的标识,用于区别一类人,比如某种角色的,也可以唯一标识一个人;
这个标识yangzie的设计是从大类/小类/具体某个用户id然后以/进行分割,举个例子,假如系统中存在这这几种角色,超级管理员,普通管理员,销售;可能这几种角色的ARO标识看起来是这个样子:
-
超级管理员:/admin/root
-
普通管理员:/admin/normal
-
销售:/salesman
-
管理员A:/admin/normal/12344
为什么要这样设计,是因为在进行授权时可以把权限分配给组或者具体某个类型或者具体某个人;然后具体的某个用户,如上面的管理员A,在验证权限时,再从具体id到大类来逐一验证,直到找到具体的权限是允许还是拒绝为止。
ACL
ARO和ACO分别定义了“操作”和“人”,那么剩下的就是把这两个关联起来,从而达到什么人能访问什么的目的;这个关联的地方就是AccessControlList;
例如yangzie中它是一个配置文件,位于app/__aros_acos__.php;默认的内容如下:
function yze_get_aco_desc($aconame) { foreach ( ( array ) yze_get_acos_aros () as $aco => $desc ) { if (preg_match ( "{^" . $aco . "}", $aconame )) { return @$desc ['desc']; } } return ''; } function yze_get_ignore_acos() { return array(); } function yze_get_acos_aros() { $array = array ( "/" => array (//module/controller/action "deny" => "", "allow" => array ( "*" //aro ), "desc" => ""//功能说明 ) ); return $array; }
登录后复制