权限控制

    xiaoxiao2021-03-26  23

    $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、注意:判断时间权限时候要换成小写或大写

    转载请注明原文地址: https://ju.6miu.com/read-660603.html

    最新回复(0)