首页 > 网站 > WEB开发 > 正文

权限控制

2024-04-27 15:06:04
字体:
来源:转载
供稿:网友
$array_file = array();        $dir = APP . "Controllers/";        //打开文件流        $handle = opendir(__DIR__);        while (false !== ($file = readdir($handle))) {            if ($file != "." && $file != "..") {                $tmp = realpath($dir . '/' . $file);                if (!is_dir($tmp)) {                    $controller = str_replace('.php', '', $file);                    if ($controller != "BaseController") {                        $array_file[] = $controller;                    }                }            }        }

        closedir($handle);

打开文件获取文件名称

 $classComment = (new ReflectionClass ($controller))->getDocComment();

影射方法获取方法中的注释。

if ($permission_list) {                foreach ($permission_list as $permission) {                    $_session['permission'][] = md5(strtolower($permission['controller']) . "@" . strtolower($permission['method']));                    $this->gen_menu_list($permission['controller'], $permission['method'], $permission['menu'],                        $permission['menu_sort'], $permission['sub_menu'], $permission['sub_menu_sort']);                }            }

function action_permission($controllers, $method){    if (isset($_SESSION['userinfo'])) {        if ($_SESSION['userinfo']['id'] != 1) {            if (!in_array(md5(strtolower($controllers) . "@" . strtolower($method)), $_SESSION['permission'])) {                return false;            } else {                return true;            }        } else {            return true;        }    }}

1、获取文件夹中的所有文件名称,打开文件名称,获取控制器中的类注释(控制器名称)和方法的注释(方法名称),存放到数据库中。

2、登陆时候每次获取登陆者的角色id,去查询该角色所有的权限和公共权限存放到session中。

3、在basecontroller控制器判断访问的URL中的控制器和方法访问做判断,存在通过,不存在提示没有该权限

4、注意:判断时间权限时候要换成小写或大写


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表