Shiro基礎學習 一 許可權管理

2021-08-03 15:31:48 字數 2898 閱讀 1616

只要有使用者參與的系統一般都要有許可權管理,許可權管理實現對使用者訪問系統的控制,按照安全規則或者

安全策略

控制使用者可以訪問而且只能訪問自己被授權的資源。

許可權管理包括使用者認證和授權兩部分。

使用者認證,使用者去訪問系統,系統要驗證使用者身份的合法性。

最常用的使用者身份驗證的方法:

(1)使用者名稱密碼方式

(2)指紋打卡機、

(3)基於證書驗證方法。

系統驗證使用者身份合法,使用者方可訪問系統的資源。(1)使用者認證的流程

(2)關鍵物件

subject:主體,理解為使用者,可能是程式,都要去訪問系統的資源,系統需要對subject進行身份認證。

principal:身份資訊

,通常是唯一的,乙個主體還有多個身份資訊,但是都有乙個主身份資訊(primary principal)。

credential:憑證資訊,可以是密碼 、證書、指紋。

總結:主體在進行身份認證時需要提供身份資訊和憑證資訊。

使用者授權,簡單理解為訪問控制,在使用者認證通過後,系統對使用者訪問資源進行控制,使用者具有資源的訪問許可權方可訪問。

流程:

主體(賬號、密碼)

資源(資源名稱

、訪問位址)

許可權(許可權名稱、資源id)

角色(角色名稱)

角色和許可權關係(角色id、許可權id)

主體和角色關係(主體id、角色id)

(1)基於角色份的訪問控制

系統角色包括: 部門經理、總經理(角色針對使用者來劃分)。

系統**中實現:

//如果該user是部門經理則可以訪問if中的**

if(user.hasrole('部門經理'))

問題:

角色針對人劃分的,人作為使用者在系統中屬於活動內容,如果該 角色可以訪問的資源出現變更,需要修改你的**了,比如:需要變更為部門經理和總經理都可以進行使用者報表檢視,**改為:

if(user.hasrole('部門經理') || user.hasrole('總經理') )

基於角色的訪問控制是不利於系統維護(可擴充套件性不強)。

(2)基於資源的訪問控制

資源在系統中是不變的,比如資源有: 類中的方法,頁面中的按鈕。

對資源的訪問需要具有permission許可權,**可以寫為:

if(user.haspermission ('使用者報表檢視(許可權識別符號)'))

上邊的方法就可以解決使用者角色變更不用修改上邊許可權控制的**。

如果需要變更許可權只需要在分配許可權模組去操作,給部門經理或總經理增或刪除許可權。

建議使用基於資源的訪問控制實現許可權管理。

(1)粗粒度許可權管理

粗粒度許可權管理,對資源型別的許可權管理。

資源型別比如:選單、url連線、使用者新增頁面、使用者資訊、類方法、頁面中按鈕。

粗粒度許可權管理比如:超級管理員可以訪問戶新增頁面、使用者資訊等全部頁面。

部門管理員可以訪問使用者資訊頁面包括頁面中所有按鈕。

(2)細粒度許可權管理

細粒度許可權管理,對資源例項的許可權管理。

資源例項就資源型別的具體化,比如:使用者id為001的修改連線,1110班的使用者資訊、行政部的員工。

細粒度許可權管理就是資料級別的許可權管理。

細粒度許可權管理比如:部門經理只可以訪問本部門的員工資訊,使用者只可以看到自己的選單,大區經理只能檢視本轄區的銷售訂單。

粗粒度和細粒度例子

系統有乙個使用者列表查詢頁面,對使用者列表查詢分許可權,如果粗顆粒管理,張三和李四都有使用者列表查詢的許可權,張三和李四都可以訪問使用者列表查詢。

進一步進行細顆粒管理,張三(行政部)和李四(開發部)只可以查詢自己本部門的使用者資訊。張三只能檢視行政部 的使用者資訊,李四只能檢視開發部門的使用者資訊。細粒度許可權管理就是資料級別的許可權管理。

(3)如何實現粗粒度和細粒度許可權管理

如何實現粗粒度許可權管理?

粗粒度許可權管理比較容易將許可權管理的**抽取出來在系統架構級別統一處理。比如:通過springmvc的***實現授權。

如何實現細粒度許可權管理?

對細粒度許可權管理在資料級別是沒有共性可言,針對細粒度許可權管理就是系統業務邏輯的一部分,如果在業務層去處理相對比較簡單,如果將細粒度許可權管理統一在系統架構級別去抽取,比較困難,即使抽取的功能可能也存在擴充套件不強。建議細粒度許可權管理在業務層去控制。

比如:部門經理只查詢本部門員工資訊,在service介面提供乙個部門id的引數,controller中根據當前使用者的資訊得到該 使用者屬於哪個部門,呼叫service時將部門id傳入service,實現該使用者只查詢本部門的員工。

框架學習 shiro許可權管理框架基礎

許可權管理實現使用者對系統資源訪問的控制,主要包括兩個部分,認證和授權。認證部分即登陸,有資格進入系統。授權即進入系統之後,只有你被授權的資源你才有資格訪問。舉個例子,教務管理系統,老師的賬號登陸之後,可以檢視所有同學的成績,並進行修改。但是學生的賬號登陸之後,只能看到自己的成績,並不能進行修改等操...

Shiro許可權管理

shiro許可權管理 一.許可權管理的四張核心的表關係 使用者表使用者 角色 關係表 角色表角色 許可權 關係表 許可權表角色 選單 關係表 選單表二.許可權的控制項 粗粒度配置檔案配置 細粒度通過註解實現 三.了解認證和授權的流程 前端發起登入請求 訪問shiro的subject subject....

Shiro許可權管理

1.sql語句許可權表 create table role id int not null auto increment comment id name varchar 20 not null comment 角色名稱 description varchar 200 comment 描述 prima...