RBAC中的权限管理代码第一版

在学习Yii的RBAC权限管理代码中,针对前端请求API,采用了忽略的办法,所用的代码如下:

getUniqueId();
        // 忽略列表
        $publicPages = [
            'site/test',
            'site/up',
            'track/upload-gpx',
            'site/login',
            'site/signup',
            'site/reset-password',
            'site/error',
            'wx/*',
        ];

        $route_arr = explode('/', $route); // 拆分路径为数组
        foreach($publicPages as $publicPage) {
            $publicPageArr = explode('/', $publicPage); // 拆分路径为数组
            for ($i = 0; $i < count($publicPageArr); $i++) {
                if (($publicPageArr[$i] == $route_arr[$i]) || ($publicPageArr[$i] == '*')) {
                    $flag = true;       // 在列表中
                }
                else {
                    $flag = false;      // 在列表中
                    break;              // 不在列表中,跳出本次循环
                }
            }
            if ($flag) {
                break;          // 在列表中,跳出循环,break 2;跳出二层循环
            }
        }
        // 如果未登录且不在列表中,则直接返回
        if (Yii::$app->user->isGuest && !$flag) {
            Yii::$app->user->loginRequired();
        }
        else {
         return true;
        }
    }
该版本代码安全性差,仅供参考

你可能感兴趣的:(yii2)