本文主要是介绍筋斗云接口编程 / 对象型接口(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
绑定访问控制类与权限
前面在讲函数型接口时,提到权限检查用checkAuth函数来实现。
在对象型接口中,通过绑定访问控制类与权限,来实现不同角色通过不同的类来控制。
比如前例中ApiLog对象接口允许员工登录(AUTH_EMP)后访问,只要定义:
class AC2_ApiLog extends AccessControl
{...
}
那么为什么AC2前缀对应员工权限呢?
在api.php中,我们查看一个重要回调函数onCreateAC
,由它来实现类与权限的绑定:
function onCreateAC($tbl)
{$cls = null;if (hasPerm(AUTH_USER)){$cls = "AC1_$tbl";if (! class_exists($cls))$cls = "AC_$tbl";}else if (hasPerm(AUTH_EMP)){$cls = "AC2_$tbl";}return $cls;
}
该函数传入一个表名(或称对象名,比如”ApiLog”),根据当前用户的角色,返回一个类名,比如”AC1_ApiLog”,”AC2_ApiLog”这些,如果返回null,则框架尝试使用类”AC_ApiLog”。
如果发现指定的类不存在,则不允许访问该对象接口。
在该段代码中,定义了用户登录后用”AC1”前缀的类,如果类不存在,可以再尝试用”AC”前缀的类,如果再不存在则不允许访问接口;
如果是员工登录,则只用”AC2”前缀的类,如果类不存在,则不允许访问接口。
关于hasPerm的用法及权限定义,可以参考前面章节“权限定义”及“登录与退出”。
这篇关于筋斗云接口编程 / 对象型接口(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!