中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ThinkPHP中RBAC有什么用

發布時間:2021-10-13 09:33:45 來源:億速云 閱讀:103 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“ThinkPHP中RBAC有什么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“ThinkPHP中RBAC有什么用”這篇文章吧。

一、什么是RBAC
基于角色的訪問控制(Role-Based Access Control)作為傳統訪問控制(自主訪問,強制訪問)的有前景的代替受到廣泛的關注。
在RBAC中,權限與角色相關聯,用戶通過成為適當角色的成員而得到這些角色的權限。這就極大地簡化了權限的管理。
在一個組織中,角色是為了完成各種工作而創造,用戶則依據它的責任和資格來被指派相應的角色,用戶可以很容易地從一個角色被指派到另一個角色。角色可依新的需求和系統的合并而賦予新的權限,而權限也可根據需要而從某角色中回收。角色與角色的關系可以建立起來以囊括更廣泛的客觀情況。

二、ThinkPHP中的RBAC
先看下官方給的實例所用到的數據表,通過5張表實現權限控制,定義如下:
RBAC 要用到5個數據表
think_user (用戶表)
think_role (用戶分組表)
think_node (操作節點)
think_role_user (用戶和用戶分組的對應)
think_access (各個操作和用戶組的對應)

ThinkPHP中RBAC有什么用
用戶表

ThinkPHP中RBAC有什么用
角色表,有哪些角色,該角色與對應的userid用戶相關聯

ThinkPHP中RBAC有什么用
根據用戶表的id給出對應的角色id相關聯,也就是給用戶分配角色,比如userid為3的角色為2,根據role角色表,7代表員工的角色

ThinkPHP中RBAC有什么用
access表,權限表,比如角色id為2,也就是員工的權限,可以的對應的結點

ThinkPHP中RBAC有什么用

結點表,代表有哪些應用-模塊-模塊方法,并且定義了之間的一種關系,比如noteid為30的是Public模塊,noteid為31,32,33,34的方法add,insert,edit,update都屬于Public。noteid為85的test方法,屬于noteid為84的Game模塊下的方法。

三、config配置文件詳解
我們看看thinkphp官方示例中的config文件:

復制代碼 代碼如下:


array(
        'APP_AUTOLOAD_PATH'=>'@.TagLib',
        'SESSION_AUTO_START'=>true,
        'USER_AUTH_ON'              =>true,
        'USER_AUTH_TYPE'            =>1,        // 默認認證類型 1 登錄認證 2 實時認證
        'USER_AUTH_KEY'             =>'authId',    // 用戶認證SESSION標記
        'ADMIN_AUTH_KEY'            =>'administrator',
        'USER_AUTH_MODEL'           =>'User',    // 默認驗證數據表模型
        'AUTH_PWD_ENCODER'          =>'md5',    // 用戶認證密碼加密方式
        'USER_AUTH_GATEWAY'         =>'/Public/login',// 默認認證網關
        'NOT_AUTH_MODULE'           =>'Public',    // 默認無需認證模塊
        'REQUIRE_AUTH_MODULE'       =>'',        // 默認需要認證模塊
        'NOT_AUTH_ACTION'           =>'',        // 默認無需認證操作
        'REQUIRE_AUTH_ACTION'       =>'',        // 默認需要認證操作
        'GUEST_AUTH_ON'             =>false,    // 是否開啟游客授權訪問
        'GUEST_AUTH_ID'             =>0,        // 游客的用戶ID
        'DB_LIKE_FIELDS'            =>'title|remark',
        'RBAC_ROLE_TABLE'           =>'think_role',
        'RBAC_USER_TABLE'           =>'think_role_user',
        'RBAC_ACCESS_TABLE'         =>'think_access',
        'RBAC_NODE_TABLE'           =>'think_node',
        'SHOW_PAGE_TRACE'=>1//顯示調試信息
    );


大家看注釋就應該懂大半了,其中Public模塊是無需認證的,道理很簡單,沒登錄之前大家都是游客身份,如果登錄頁面也要權限,那從哪里登錄呢?是吧,呵呵。默認網關地址就是認證失敗,沒有權限跳轉到此處,重新登陸。ADMIN_AUTH_KEY表示超級管理員權限,如果你在user表建立一個名為admin的用戶,那么這個用戶就是超級管理員,不用給它分配權限,什么權限都有,為什么要設置一個這樣的管理員,因為當你把權限分配錯了容易引起系統權限混亂,搞得大家都訪問不了,這時候超級管理員就來了。

四、RBAC類的幾個重要的方法
authenticate($map,$model=”)方法 傳入查詢用戶的條件和用戶表的MODEL 返回數組包含用戶的信息
saveAccessList($authId=null)方法 傳入用戶的ID 此方法不返回值,只是設置 $_SESSION['_ACCESS_LIST']的值,其中包含了所有該用戶對應的用戶組的有權限操作的所有節點 $_SESSION['_ACCESS_LIST']['項目名']['模塊名']['操作名'],以后判斷權限就是判斷當前項目,模塊和操作是否在 $_SESSION['_ACCESS_LIST']中能找到。
checkAccess() 方法 檢測當前模塊和操作是否需要驗證 返回bool類型
checkLogin()方法 檢測登錄
AccessDecision($appName=APP_NAME) 方法 就是檢測當前項目模塊操作 是否在$_SESSION['_ACCESS_LIST']數組中,也就是說 在 $_SESSION['_ACCESS_LIST'] 數組中$_SESSION['_ACCESS_LIST']['當前操作']['當前模塊']['當前操作']是否存在。如果存在表示有權限 否則返回flase。
getAccessList($authId) 方法 通過查詢數據庫 返回權限列表 $_SESSION['_ACCESS_LIST']的值了。

以上是“ThinkPHP中RBAC有什么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳原县| 饶河县| 江油市| 南投县| 黄浦区| 报价| 石泉县| 阆中市| 淮安市| 邢台县| 屯昌县| 布尔津县| 竹溪县| 西吉县| 塔河县| 高台县| 阜南县| 东方市| 元朗区| 大港区| 北宁市| 兴隆县| 台北市| 合山市| 贵州省| 昌邑市| 郧西县| 营口市| 武功县| 汉源县| 新郑市| 南昌县| 尼勒克县| 柳江县| 邯郸市| 陕西省| 绥宁县| 阿克苏市| 陆川县| 延吉市| 景泰县|