thinkphp中RBAC示例中登錄沒有權限的問題

今天從thinkphp官網下載RBAC示例,準備移植我做的項目中。

但是移植完之後,發現只有admin可以登陸,其他用戶登陸提示沒有權限。

從RBAC.class.php中看到

static public function AccessDecision($appName=APP_NAME) {
        //檢查是否需要認證
        if(RBAC::checkAccess()) {
            //存在認證識別號,則進行進一步的訪問決策
            $accessGuid   =   md5($appName.MODULE_NAME.ACTION_NAME);
            if(empty($_SESSION[C('ADMIN_AUTH_KEY')])) {
                if(C('USER_AUTH_TYPE')==2) {
                    //加強驗證和即時驗證模式 更加安全 後臺權限修改可以即時生效
                    //通過數據庫進行訪問檢查
                    $accessList = RBAC::getAccessList($_SESSION[C('USER_AUTH_KEY')]);
                }else {
                    // 如果是管理員或者當前操作已經認證過,無需再次認證
                    if( $_SESSION[$accessGuid]) {
                        return true;
                    }
                    //登錄驗證模式,比較登錄後保存的權限訪問列表
                    $accessList = $_SESSION['_ACCESS_LIST'];
                }
                //判斷是否爲組件化模式,如果是,驗證其全模塊名
                $module = defined('P_MODULE_NAME')?  P_MODULE_NAME   :   MODULE_NAME;
                if(!isset($accessList[strtoupper($appName)][strtoupper($module)][strtoupper(ACTION_NAME)])) {
                    $_SESSION[$accessGuid]  =   false;
                    return false;
                }
                else {
                    $_SESSION[$accessGuid]	=	true;
                }
            }else{
                //管理員無需認證
				return true;
			}
        }
        return true;
    }

 發現要用到APP_NAME,而我的項目名爲App。而從數據庫中get的名稱爲Rbac。

所以只要把think_node中name字段爲Rbac改爲App,就可以了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章