<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                經過一天的努力,終于把ThinkPHP的RBAC類弄明白了,現在記錄下來,成果與大家分享。要想得到更詳盡的信息,還需要去查看RBAC類的源代碼。 首先需要使用5張數據表,關系圖如下: 這五張表的英文名是任意的,只需修改相應的配置項就可以,默認的英文名分別為:用戶表(think_user)、用戶組表(think_role)、節點表(think_node)、用戶與用戶組關系表(think_role_user)、權限表(think_access)。 生成他們的sql語句如下(復制粘貼的): ~~~ CREATE TABLE IF NOT EXISTS `think_access` ( `role_id` smallint(6) unsigned NOT NULL, `node_id` smallint(6) unsigned NOT NULL, `level` tinyint(1) NOT NULL, `module` varchar(50) DEFAULT NULL, KEY `groupId` (`role_id`), KEY `nodeId` (`node_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `think_node` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `title` varchar(50) DEFAULT NULL, `status` tinyint(1) DEFAULT '0', `remark` varchar(255) DEFAULT NULL, `sort` smallint(6) unsigned DEFAULT NULL, `pid` smallint(6) unsigned NOT NULL, `level` tinyint(1) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `level` (`level`), KEY `pid` (`pid`), KEY `status` (`status`), KEY `name` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `think_role` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `pid` smallint(6) DEFAULT NULL, `status` tinyint(1) unsigned DEFAULT NULL, `remark` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `pid` (`pid`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; CREATE TABLE IF NOT EXISTS `think_role_user` ( `role_id` mediumint(9) unsigned DEFAULT NULL, `user_id` char(32) DEFAULT NULL, KEY `group_id` (`role_id`), KEY `user_id` (`user_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; ~~~ 注意其中沒有think_user表的生成語句,這張表在你編寫“用戶模型(User Model)”時自行創建,因為RBAC類不做類似于登錄時用戶名、密碼是否匹配的工作。換句話說,檢查用戶名、密碼是否匹配,該用戶能不能成功登錄的代碼是你寫的,你需要在用戶成功登錄后,將這個用戶的ID寫到相應的SESSION里,普通用戶的寫到$_SESSION[C('USER_AUTH_KEY')]里,管理員的寫到$_SESSION[C('ADMIN_AUTH_KEY')]里。 接下來要說明的是幾個相關的配置項: ~~~ // ADMIN_AUTH_KEY 管理員認證SESSION標記 // USER_AUTH_KEY 用戶認證SESSION標記 // // $_SESSION[C('USER_AUTH_KEY')] 用來保存登陸成功后的用戶ID // $_SESSION[C('ADMIN_AUTH_KEY')] 用來保存登陸成功后的管理員ID // // USER_AUTH_ON 是否需要認證 // USER_AUTH_TYPE 認證類型,1是登陸認證,2是實時認證 // USER_AUTH_MODEL 用戶模型名稱 // GUEST_AUTH_ON 是否開啟游客授權訪問 // GUEST_AUTH_ID 游客的用戶ID // // REQUIRE_AUTH_MODULE 需要認證模塊(若定義了,則只驗證給出的模塊;否則驗證所有模塊) // NOT_AUTH_MODULE 無需認證模塊(若定義了“需要認證模塊”則本條定義無效) // REQUIRE_AUTH_ACTION 需要認證操作(若定義了,則只驗證給出的操作;否則驗證所有操作) // NOT_AUTH_ACTION 無需認證操作(若定義了“需要認證操作”則本條定義無效) // // USER_AUTH_GATEWAY 認證網關,如果用戶沒有登錄則轉到這頁(URL路由規則) // RBAC_DB_DSN 數據庫連接DSN // RBAC_ROLE_TABLE 角色表名稱 // RBAC_USER_TABLE 用戶表名稱(應該是用戶、用戶組關系表) // RBAC_ACCESS_TABLE 權限表名稱 // RBAC_NODE_TABLE 節點表名稱 ~~~ 在定義了這幾項之后,就可以調用RBAC類中的方法了,這些方法的聲明及解釋如下: 1. `static public function authenticate($map,$model='')` 根據map中指定的條件查詢“用戶模型”,返回符合條件的數據。其實就是M(User)->where($map)->find()。 2. static function saveAccessList($authId=null) 檢測當前用戶的所有權限,并將這些擁有的權限保存在$_SESSION['_ACCESS_LIST']中,不返回任何東西。開銷很大,是對RBAC::getAccessList的默認參數封裝。 3. `static function getRecordAccessList($authId=null,$module='')` 檢測當前用戶在當前模塊中所擁有的權限,并將這些權限返回。開銷很大,是對getModuleAccessList的默認參數封裝。 4. `static function checkAccess()` 檢查當前操作是否需要認證,需要認證則返回true,不需要則返回false. 5. static public function checkLogin() 檢查用戶是否登錄。如果沒有登錄,則嘗試進行“游客”登錄;如果沒有開啟以游客身份登錄,則跳轉到認證網關。登錄成功將返回true。 6. `static public function AccessDecision($appName=APP_NAME)` 權限認證的過濾器方法,檢查當前操作是否被允許,返回bool值。 7. `static public function getAccessList($authId)` 取得指定用戶的權限列表。 8. `static public function getModuleAccessList($authId,$module)` 取得指定用戶、指定模塊的權限列表。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看