由于需要,理解thinkcmf的权限管理方式,特此记录,备忘。
后台管理页面的访问权限
在cmf的simplewind/cmf/controller/AdminBaseController.php文件中,使用函数checkAccess($userid)判断此登陆用户是否有权限访问此页面。
/**
* 检查后台用户访问权限
* @param int $userId 后台用户id
* @return boolean 检查通过返回true
*/
private function checkAccess($userId)
{
// 如果用户id是1,则无需判断
if ($userId == 1) {
return true;
}
$module = $this->request->module();
$controller = $this->request->controller();
$action = $this->request->action();
$rule = $module . $controller . $action;
$notRequire = ["adminIndexindex", "adminMainindex"];
if (!in_array($rule, $notRequire)) {
return cmf_auth_check($userId);
} else {
return true;
}
}
在这个函数里首先判断用户是不是超级管理员用户,如果是,不用检查权限,直接放行。如果访问的是后台主界面等所有人都可以访问的公共界面,也直接放行。否则调用cmf_auth_check()函数检查权限。
转到cmf_auth_check()函数看看
/**
* 检查权限
* @param $userId int 要检查权限的用户 ID
* @param $name string|array 需要验证的规则列表,支持逗号分隔的权限