shiro 初級教程

2021-08-09 06:12:53 字數 2409 閱讀 5379

首先:看不懂多看幾次,我已經把我學習的精華寫出來了

什麼許可權管理,我認為大概包括使用者認證與使用者授權。只要用使用者的系統,都會存在許可權管理。

二、許可權管理基礎

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 部分 編...