首先:看不懂多看幾次,我已經把我學習的精華寫出來了
什麼許可權管理,我認為大概包括使用者認證與使用者授權。只要用使用者的系統,都會存在許可權管理。
二、許可權管理基礎
2.1使用者認證
首先不管你做沒有做過許可權管理,如下圖你也是熟悉的。
這個圖的流程很簡單,很直觀的看到許可權認證的流程走向。那麼上圖中存在哪些關鍵的東西,我們來總結一下。
subject:主體就是系統使用者,這個使用者可以是真正的人,也可以是程式。上圖為登入使用者(主人)。
principal:身份資訊就是主體的身份標誌,身份資訊是一對多關係。上圖你可以是群主,也是尊貴的qq會員(身份體現)。
credential:憑證資訊只要主體知道,或者主體提供的資訊。例如我們的身份證憑證。上圖為登入密碼(身份證硬體)。
2.2使用者授權
如圖為使用者授權流程,簡單明瞭。
看圖說話:使用者認證通過之後,接下來就是主體subject訪問資源resource的時候,這個時候就需要驗證許可權身份principal。如果擁有憑證credential就可以訪問。注意到多乙個紅色詞語,就是資源resource,授權就是對資源進行授權的過程。
如果硬要按照語文課的六要素的話可以劃分如下:誰+做+什麼
who:主體subject。主體需要訪問系統中的資源 -----------誰
what:資源resource。如系統選單、頁面、按鈕、類方法、系統商品資訊等。資源包括資源型別和資源例項,比如商品資訊為資源型別,型別為t01的商品為資源例項,編號為
001的商品資訊也屬於資源例項 ----------什麼
how:許可permission 規定了主體對資源的操作許可,許可權離開資源沒有意義,如使用者查詢許可權、使用者新增許可權、某個類方法的呼叫許可權、編號為001使用者的修改許可權等,通過
許可權可知主體對哪些資源都有哪些操作許可。許可權分為粗顆粒和細顆粒,粗顆粒許可權是指對資源型別的許可權,細顆粒許可權是對資源例項的許可權。
-----------做
如圖為資源型別與資源例項許可權。仔細品味
三、簡易許可權模型
簡易模式包括:
1、主體:(賬戶、密碼)
3、許可權:(許可權名稱、資源id)
4、角色:(角色名稱)
5、角色許可權關係:(角色id、許可權id)
6、主體角色關係:(主體id、角色id)
可以建立如下資料表搭建模型:
或者:2、3合併為資源許可權:
許可權(許可權名稱、資源名稱、資源訪問位址)
四、許可權控制
了解了使用者認證、使用者授權、許可權模型之後,我們來看看許可權控制,就是我們上面我們看到的判斷。
4.1基於角色控制許可權
rbac基於角色的訪問控制(role-based access control)是以角色為中心進行訪問控制
例如:if(主體.hasrole("總經理角色id"))
缺陷:如果懂事長秘書也有查詢工資的許可權呢??如下
if(主體.hasrole("總經理角色id")||主體.hasrole("懂事長秘書角色id"))
所有這種我們一般不建議!!!
4.2基於資源控制許可權
rbac基於資源的訪問控制(resource-based access control)是以資源為中心進行訪問控制
例如:if(主體.haspermission("查詢工資許可權標識"))
優點:系統設計時定義好查詢工資的許可權標識,即使查詢工資所需要的角色變化為總經理和部門經理也只需要將「查詢工資資訊許可權」新增到「部門經理角色」的許可權列表中,判斷邏輯不用修改,系統可擴充套件性強。
五、總結
這一篇我注意講解了,一些基礎模型,即使你用任何許可權工具或者自己寫許可權框架也可以用到。接下來,就許可權解決方案等一系列方式,我採用shrio框架
HLSL初級教程
hlsl 初級教程 trcj 目錄 前言1.hlsl 入門1.1 什麼是著色器 1.2什麼是 hlsl 1.3怎麼寫hlsl 著色器1.4 怎麼用hlsl 著色器2.頂點著色器 2.1可程式設計資料流模型 2.2頂點宣告 2.3用頂點著色器實現漸變動畫 3.畫素著色器 3.1多紋理化 3.2多紋理效...
SubVersion初級教程
don t tell me why,just tell me how.1 找個rpm或者bin或者tar之類的安裝包,把subvesion安裝好。裝好之後client server admin都在你機器上了。2 首先在你中意的目錄,比如根目錄 下,執行 svnadmin create svnroot...
Django初級教程
該教程的版本為django2.0。快速安裝指南 編寫你的第乙個 django 應用,第 1 部分 編寫你的第乙個 django 應用,第 2 部分 編寫你的第乙個 django 應用,第 3 部分 編寫你的第乙個 django 應用,第 4 部分 編寫你的第乙個 django 應用,第 5 部分 編...