出现问题的代码如下:
// 和公共模块的操作权限合并
$action += $publicAction;
$access[strtoupper($appName)][strtoupper($moduleName)] = array_change_key_case($action,CASE_UPPER);
应该改为,
// 和公共模块的操作权限合并
//$action += $publicAction;
$access[strtoupper($appName)][strtoupper($moduleName)] = array_change_key_case($action,CASE_UPPER);
}
$access[strtoupper($appName)][strtoupper('public')]=array_change_key_case($publicAction,CASE_UPPER);
在第一段代码中,
当$action和$publicAction中都有一个相同的的操作(如edit),则就无法限制$action中的操作(如edit),因为代码不限制$publicAction(公共模块操作)中的操作。当然前提都所有的模块和操作都先输入到think_node表中,当$publicAction中的操作没有输入到$think_node表中则不会发生上述不能限制问题。