【基於url許可權管理 shiro(一)】--基礎

來源:互聯網
上載者:User

標籤:問題   hat   有用   通過   技術   對象   多個   class   res   

只要有使用者參與的系統一般都要有許可權管理,許可權管理實現對使用者訪問系統的控制,按照安全規則或者安全性原則控制使用者可以訪問而且只能訪問自己被授權的資源。許可權管理組件括使用者認證和授權兩部分。

 

 

使用者認證 1.概念

使用者認證,使用者去訪問系統,系統要驗證使用者身份的合法性。最常用的使用者身分識別驗證的方法:1、使用者名稱密碼方式、2、指紋打卡機、3、基於認證驗證方法。。系統驗證使用者身份合法,使用者方可訪問系統的資源。

 

2.使用者認證流程


 

 

3.關鍵對象

subject:主體,理解為使用者,可能是程式,都要去訪問系統的資源,系統需要對subject進行身份認證。
principal:身份資訊,通常是唯一的,一個主體還有多個身份資訊,但是都有一個主身份資訊(primary principal)
credential:憑證資訊,可以是密碼 、認證、指紋
總結:主體在進行身份認證時需要提供身份資訊和憑證資訊

 

使用者授權1.概念

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

2.授權流程


 

3.關鍵對象

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

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

what(which):資源(Resource),subject必須具備資源的存取權限才可訪問該 資源。資源比如:系統使用者列表頁面、商品修改菜單、商品id為001的商品資訊。
資源分為資源類型和資源執行個體:
系統的使用者資訊就是資源類型,相當於Java類。
系統中id為001的使用者就是資源執行個體,相當於new的java對象。

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

4. 許可權模型

主體(帳號、密碼)
資源(資源名稱、訪問地址)
許可權(許可權名稱、資源id)
角色(角色名稱)
角色和許可權關係(角色id、許可權id)
主體和角色關係(主體id、角色id)

如:


 

通常企業開發中將資源和許可權表合并為一張許可權表,如下:
資源(資源名稱、訪問地址)
許可權(許可權名稱、資源id)
合并為:
許可權(許可權名稱、資源名稱、資源訪問地址)


常被稱為許可權管理的通用模型,不過企業在開發中根據系統自身的特點還會對進行修改,但是使用者、角色、許可權、使用者角色關係、角色許可權關係是需要去理解的。

3.分配許可權:

使用者需要分配相應的許可權才可訪問相應的資源。許可權是對於資源的操作許可。通常給使用者指派資源許可權需要將許可權資訊持久化,比如儲存在關聯式資料庫中。把使用者資訊、許可權管理、使用者指派的許可權資訊寫到資料庫(許可權資料模型)

4.許可權控制:1.角色型存取控制

RBAC(role  based  access  control),角色型存取控制。
比如:
系統角色包括 :部門經理、總經理。。(角色針對使用者來劃分)


系統代碼中實現:
//如果該user是部門經理則可以訪問if中的代碼
if(user.hasRole(‘部門經理‘)){
//系統資源內容
//使用者報表查看
}


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

if(user.hasRole(‘部門經理‘) || user.hasRole(‘總經理‘)  ){
//系統資源內容
//使用者報表查看
}

角色型存取控制是不利於系統維護(可擴充性不強)。

 

2.基於資源的許可權存取控制

RBAC(Resource  based  access  control),基於資源的存取控制。
資源在系統中是不變的,比如資源有:類中的方法,頁面中的按鈕。
對資源的訪問需要具有permission許可權,代碼可以寫為:
if(user.hasPermission (‘使用者報表查看(許可權標識符)‘)){
//系統資源內容
//使用者報表查看
}

上邊的方法就可以解決使用者角色變更不用修改上邊許可權控制的代碼。
如果需要變更許可權只需要在分配許可權模組去操作,給部門經理或總經理增或刪除許可權。
建議使用基於資源的存取控制實現許可權管理。

 

總結:

         在想要對shiro有很好的瞭解,這些基礎知識是必須瞭解的.下篇部落格將講解許可權管理解決方案.如果您喜歡博文,請點擊末尾的"頂"

 

http://blog.csdn.net/chenxiaochan/article/details/72880772

 

【基於url許可權管理 shiro(一)】--基礎

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.