思維導圖如下:
rbac 全稱為基于角色的權限控制,本段将會從什麼是 rbac,模型分類,什麼是權限,使用者組的使用,執行個體分析等幾個方面闡述 rbac.
思維導圖
繪制思維導圖如下
什麼是 rbac
rbac 全稱為使用者角色權限控制,通過角色關聯使用者,角色關聯權限,這種方式,間階的賦予使用者的權限,如下圖所示
對于通常的系統而言,存在多個使用者具有相同的權限,在配置設定的時候,要為指定的使用者配置設定相關的權限,修改的時候也要依次的對這幾個使用者的權限進行修改,有了角色這個權限,在修改權限的時候,隻需要對角色進行修改,就可以實作相關的權限的修改。這樣做增加了效率,減少了權限漏洞的發生。
對于 rbac 模型來說,分為以下幾個模型 分别是 rbac0,rbac1,rbac2,rbac3,這四個模型,這段将會依次介紹這四個模型,其中最常用的模型有 rbac0.
rbac0 是最簡單的 rbac 模型,這裡面包含了兩種。
使用者和角色是多對一的關系,即一個使用者隻充當一種角色,一個角色可以有多個角色的擔當。
使用者和角色是多對多的關系,即,一個使用者可以同時充當多個角色,一個角色可以有多個使用者。
此系統功能單一,人員較少,這裡舉個栗子,張三既是行政,也負責财務,此時張三就有倆個權限,分别是行政權限,和财務權限兩個部分。
相對于 rbac0 模型來說,增加了子角色,引入了繼承的概念。
這裡 rbac2 模型,在 rbac0 模型的基礎上,增加了一些功能,以及限制
即,同一個使用者不能擁有兩個互斥的角色,舉個例子,在财務系統中,一個使用者不能擁有會計員和審計這兩種角色。
即,用一個角色,所擁有的成員是固定的,例如對于 ceo 這種角色,同一個角色,也隻能有一個使用者。
即,對于該角色來說,如果想要獲得更高的角色,需要先擷取低一級别的角色。舉個栗子,對于副總經理和經理這兩個權限來說,需要先有副總經理權限,才能擁有經理權限,其中副總經理權限是經理權限的先決條件。
即,一個使用者可以擁有兩個角色,但是這倆個角色不能同時使用,需要切換角色才能進入另外一個角色。舉個栗子,對于總經理和專員這兩個角色,系統隻能在一段時間,擁有其一個角色,不能同時對這兩種角色進行操作。
即,rbac1,rbac2,兩者模型全部累計,稱為統一模型。
權限是資源的集合,這裡的資源指的是軟體中的所有的内容,即,對頁面的操作權限,對頁面的通路權限,對資料的增删查改的權限。舉個栗子。對于下圖中的系統而言,
擁有,計劃管理,客戶管理,合同管理,出入庫通知單管理,糧食安全追溯,糧食統計查詢,裝置管理這幾個頁面,對這幾個頁面的通路,以及是否能夠通路到菜單,都屬于權限。
對于使用者組來說,是把衆多的使用者劃分為一組,進行批量授予角色,即,批量授予權限。舉個栗子,對于部門來說,一個部門擁有一萬多個員工,這些員工都擁有相同的角色,如果沒有使用者組,可能需要一個個的授予相關的角色,在擁有了使用者組以後,隻需要,把這些使用者全部劃分為一組,然後對該組設定授予角色,就等同于對這些使用者授予角色。
優點:減少工作量,便于了解,增加多級管理,等。
首先添加依賴
然後添加相關的通路接口
最後啟動項目,在日志中檢視相關的密碼
通路接口,可以看到相關的登入界面
輸入使用者名和相關的密碼
登入成功
在配置檔案中,書寫相關的登入和密碼
在登入頁面,輸入使用者名和密碼,即可正常登入
需要自定義類繼承 websecurityconfigureradapter 代碼如下
即,配置的使用者名為 admin,密碼為 123,角色為 admin
httpsecurity
這裡對一些方法進行攔截
即,這裡完成了對所有的方法通路的攔截。
這是一個小 demo,目的,登入以後傳回 jwt 生成的 token
添加 web 依賴
導入 jwt 和 security 依賴
建立 一個相關的 javabean
編寫工具類,用來生成 token,以及重新整理 token,以及驗證 token。
編寫 filter 用來檢測 jwt
在上方代碼中,編寫 userdetailsservice,類,實作其驗證過程
編寫登入業務的實作類 其 login 方法會傳回一個 jwtutils 的 token
運作,傳回結果為 token
這裡配置 springsecurity 之 json 登入
這裡需要重寫 usernamepasswordanthenticationfilter 類,以及配置 springsecurity
這樣就完成使用 json 登入 springsecurity
需要在 config 類中配置如下内容
即,使用此方法,對密碼進行加密, 在業務層的時候,使用此加密的方法
即,使用 bcryptpasswordencoder 對密碼進行加密,儲存資料庫
這裡使用資料庫認證 springsecurity
這裡設計資料表
這裡着重配置 springconfig。
着重講解了 rbac 的權限配置,以及簡單的使用 springsecurity,以及使用 springsecurity + jwt 完成前後端的分離,以及配置 json 登入,和密碼加密方式。
-end-
如果看到這裡,說明你喜歡這篇文章,請 轉發、點贊。同時 标星(置頂)本公衆号可以第一時間接受到博文推送。
最近整理一份面試資料《java技術棧學習手冊》,覆寫了java技術、面試題精選、spring全家桶、nginx、ssm、微服務、資料庫、資料結構、架構等等。
擷取方式:點“ 在看,關注公衆号 java後端 并回複 777 領取,更多内容陸續奉上。
喜歡文章,點個在看