什麼是粗粒度和細粒度權限

1.   什麼是粗粒度和細粒度權限

 

粗粒度權限管理,對資源類型的權限管理。資源類型比如:菜單、url連接、用戶添加頁面、用戶信息、類方法、頁面中按鈕。。

粗粒度權限管理比如:超級管理員可以訪問戶添加頁面、用戶信息等全部頁面。

部門管理員可以訪問用戶信息頁面包括 頁面中所有按鈕。

 

細粒度權限管理,對資源實例的權限管理。資源實例就資源類型的具體化,比如:用戶id爲001的修改連接,1110班的用戶信息、行政部的員工。

細粒度權限管理就是數據級別的權限管理。

細粒度權限管理比如:部門經理只可以訪問本部門的員工信息,用戶只可以看到自己的菜單,大區經理只能查看本轄區的銷售訂單。。

 

粗粒度和細粒度例子:

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

進一步進行細顆粒管理,張三(行政部)和李四(開發部)只可以查詢自己本部門的用戶信息。張三隻能查看行政部 的用戶信息,李四隻能查看開發部門的用戶信息。細粒度權限管理就是數據級別的權限管理。



2.   如何實現粗粒度和細粒度權限管理

 

如何實現粗粒度權限管理?

粗粒度權限管理比較容易將權限管理的代碼抽取出來在系統架構級別統一處理。比如:通過springmvc的攔截器實現授權。

 

如何實現細粒度權限管理?

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

建議細粒度權限管理在業務層去控制。

比如:部門經理只查詢本部門員工信息,在service接口提供一個部門id的參數,controller中根據當前用戶的信息得到該 用戶屬於哪個部門,調用service時將部門id傳入service,實現該用戶只查詢本部門的員工。

 

 

3.   基於url攔截的方式實現

基於url攔截的方式實現在實際開發中比較常用的一種方式。

對於web系統,通過filter過慮器實現url攔截,也可以使用springmvc的攔截器實現基於url的攔截。

 

 

4.   使用權限管理框架實現

對於粗粒度權限管理,建議使用優秀權限管理框架來實現,節省開發成功,提高開發效率。

shiro就是一個優秀權限管理框架。


轉載他人,僅供參考。謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章