一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - ThinkPHP的RBAC(基于角色權(quán)限控制)深入解析

ThinkPHP的RBAC(基于角色權(quán)限控制)深入解析

2020-04-15 12:24PHP教程網(wǎng) PHP教程

本篇文章是對ThinkPHP的RBAC(基于角色權(quán)限控制)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

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

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

ThinkPHP的RBAC(基于角色權(quán)限控制)深入解析

用戶表

ThinkPHP的RBAC(基于角色權(quán)限控制)深入解析

角色表,有哪些角色,該角色與對應(yīng)的userid用戶相關(guān)聯(lián)

ThinkPHP的RBAC(基于角色權(quán)限控制)深入解析

根據(jù)用戶表的id給出對應(yīng)的角色id相關(guān)聯(lián),也就是給用戶分配角色,比如userid為3的角色為2,根據(jù)role角色表,7代表員工的角色

ThinkPHP的RBAC(基于角色權(quán)限控制)深入解析

access表,權(quán)限表,比如角色id為2,也就是員工的權(quán)限,可以的對應(yīng)的結(jié)點

ThinkPHP的RBAC(基于角色權(quán)限控制)深入解析
結(jié)點表,代表有哪些應(yīng)用-模塊-模塊方法,并且定義了之間的一種關(guān)系,比如noteid為30的是Public模塊,noteid為31,32,33,34的方法add,insert,edit,update都屬于Public。noteid為85的test方法,屬于noteid為84的Game模塊下的方法。

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

復(fù)制代碼 代碼如下:

array(
        'APP_AUTOLOAD_PATH'=>'@.TagLib',
        'SESSION_AUTO_START'=>true,
        'USER_AUTH_ON'              =>true,
        'USER_AUTH_TYPE'            =>1,        // 默認(rèn)認(rèn)證類型 1 登錄認(rèn)證 2 實時認(rèn)證
        'USER_AUTH_KEY'             =>'authId',    // 用戶認(rèn)證SESSION標(biāo)記
        'ADMIN_AUTH_KEY'            =>'administrator',
        'USER_AUTH_MODEL'           =>'User',    // 默認(rèn)驗證數(shù)據(jù)表模型
        'AUTH_PWD_ENCODER'          =>'md5',    // 用戶認(rèn)證密碼加密方式
        'USER_AUTH_GATEWAY'         =>'/Public/login',// 默認(rèn)認(rèn)證網(wǎng)關(guān)
        'NOT_AUTH_MODULE'           =>'Public',    // 默認(rèn)無需認(rèn)證模塊
        'REQUIRE_AUTH_MODULE'       =>'',        // 默認(rèn)需要認(rèn)證模塊
        'NOT_AUTH_ACTION'           =>'',        // 默認(rèn)無需認(rèn)證操作
        'REQUIRE_AUTH_ACTION'       =>'',        // 默認(rèn)需要認(rèn)證操作
        'GUEST_AUTH_ON'             =>false,    // 是否開啟游客授權(quán)訪問
        '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//顯示調(diào)試信息
    );


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

 

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99精品视频在线观看 | 乖女的嫩奶水h文孕妇 | 韩国最新理论三级在线观看 | 亚洲精品中文字幕第一区 | 91传媒制片厂果冻有限公司 | 日本一区二区三区国产 | 成年人视频在线播放 | 精品一区视频 | 俺去俺也在线www色官网 | 国产精品原创巨作无遮挡 | 亚洲国产成人精品 | 日韩免费在线视频观看 | 国产日产欧产精品精品软件 | 国内外精品免费视频 | caoporen在线视频入口 | 高清视频免费 | 国产成人精品777 | 欧美日韩免费一区二区在线观看 | 人成午夜免费大片在线观看 | 亚洲乱码一二三四区国产 | 放荡护士玩3p口述 | 好大好硬快点好爽公 | 日本偷偷操| 日本xx高清视频免费观看 | 无码国产成人777爽死在线观看 | 亚洲毛片网| 乌克兰18sex性hd| 青青操在线观看 | 特黄特色大片免费高清视频 | 国产男女乱淫真视频全程播放 | 欧美成人影院免费观 | 视频一区二区三区在线观看 | 亚洲情射 | 欧美黑大吊 | 久久黄色精品视频 | japanese秘书丝袜 | pregnant欧美孕交xxx | 久久亚洲精品AV无码四区 | ck7788免费视频 | 亚洲波霸 | 亚洲精品国产在线 |