shiro 一 許可權控制介紹

2021-08-29 05:39:30 字數 1966 閱讀 2443

只要有使用者參與的系統一般都要有許可權管理,許可權管理實現對使用者訪問系統的控制,按照安全規則或者安全策略控制使用者可以訪問而且只能訪問自己被授權的資源

許可權管理包括使用者認證授權兩部分。shiro也是基於此來進行設計實現的

使用者認證一般流程如下:

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

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

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

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

授權流程如下:

授權的過程理解:who對what(which)進行how操作。

who:主體即subject,subject在認證通過後系統進行訪問控制。

what(which):資源(resource),subject必須具備資源的訪問許可權才可訪問該 資源。資源比如:系統使用者列表頁面、商品修改選單、商品id為001的商品資訊。

how:許可權/許可(permission) ,針對資源的許可權或許可,subject具有permission訪問資源,如何訪問/操作需要定義permission,許可權比如:使用者新增、使用者修改、商品刪除。

許可權模型圖如下:

通常企業開發中將資源和許可權表合併為一張許可權表,如下:

rbac(role based access control),基於角色的訪問控制。

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

系統**中實現:

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

if(user.

hasrole

('部門經理'))

rbac(resource based access control),基於資源的訪問控制。

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

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

if

(user.

haspermission

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

粗粒度許可權管理,對資源型別的許可權管理。資源型別比如:選單、url連線、使用者新增頁面、使用者資訊、類方法、頁面中按鈕。。

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

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

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

shiro許可權控制簡介

最近專案中用到了shrio許可權控制,因此抽出一定的時間了解了一下他的使用方式和原理,同springsecurity的方式一樣,使用shiro許可權控制,主要包括了三個重要的組成部分 user,permission,role即使用者,許可權,和角色,其中,使用者和許可權,角色之間是一對多的,許可權和...

Shiro的許可權控制

requirespermissions 許可權的攔截,對應使用者的許可權列表。logical是各 個許可權的關係,or是滿足乙個就行,and是都得滿足 requiresroles 角色的攔截,對應使用者的角色 role requirespermissions value logical logica...

一 shiro學習 許可權理論介紹

許可權管理 使用者認證 授權管理 按照一定的安全規則與策略控制使用者可以訪問而且只能訪問自己被授權的部分資源。使用者認證 判斷使用者是否屬於合法使用者的過程 人像核查 指紋核查 刷卡核查 使用者口令等等 使用者認證流程 關鍵物件 suject 主體 使用者 程式 principal身份資訊 身份認證...