權(quán)限控制之粗粒度與細(xì)粒度概念及實(shí)現(xiàn)簡(jiǎn)單介紹
本文簡(jiǎn)單介紹了權(quán)限控制之粗粒度與細(xì)粒度概念及實(shí)現(xiàn),下面看看具體內(nèi)容。
1. 什么是粗粒度和細(xì)粒度權(quán)限
粗粒度權(quán)限管理,對(duì)資源類型的權(quán)限管理。資源類型比如:菜單、url連接、用戶添加頁(yè)面、用戶信息、類方法、頁(yè)面中按鈕。。
粗粒度權(quán)限管理比如:超級(jí)管理員可以訪問(wèn)戶添加頁(yè)面、用戶信息等全部頁(yè)面。
部門(mén)管理員可以訪問(wèn)用戶信息頁(yè)面包括 頁(yè)面中所有按鈕。
細(xì)粒度權(quán)限管理,對(duì)資源實(shí)例的權(quán)限管理。資源實(shí)例就資源類型的具體化,比如:用戶id為001的修改連接,1110班的用戶信息、行政部的員工。
細(xì)粒度權(quán)限管理就是數(shù)據(jù)級(jí)別的權(quán)限管理。
細(xì)粒度權(quán)限管理比如:部門(mén)經(jīng)理只可以訪問(wèn)本部門(mén)的員工信息,用戶只可以看到自己的菜單,大區(qū)經(jīng)理只能查看本轄區(qū)的銷售訂單。。
粗粒度和細(xì)粒度例子:
系統(tǒng)有一個(gè)用戶列表查詢頁(yè)面,對(duì)用戶列表查詢分權(quán)限,如果粗顆粒管理,張三和李四都有用戶列表查詢的權(quán)限,張三和李四都可以訪問(wèn)用戶列表查詢。
進(jìn)一步進(jìn)行細(xì)顆粒管理,張三(行政部)和李四(開(kāi)發(fā)部)只可以查詢自己本部門(mén)的用戶信息。張三只能查看行政部 的用戶信息,李四只能查看開(kāi)發(fā)部門(mén)的用戶信息。細(xì)粒度權(quán)限管理就是數(shù)據(jù)級(jí)別的權(quán)限管理。
2. 如何實(shí)現(xiàn)粗粒度和細(xì)粒度權(quán)限管理
如何實(shí)現(xiàn)粗粒度權(quán)限管理?
粗粒度權(quán)限管理比較容易將權(quán)限管理的代碼抽取出來(lái)在系統(tǒng)架構(gòu)級(jí)別統(tǒng)一處理。比如:通過(guò)springmvc的攔截器實(shí)現(xiàn)授權(quán)。
如何實(shí)現(xiàn)細(xì)粒度權(quán)限管理?
對(duì)細(xì)粒度權(quán)限管理在數(shù)據(jù)級(jí)別是沒(méi)有共性可言,針對(duì)細(xì)粒度權(quán)限管理就是系統(tǒng)業(yè)務(wù)邏輯的一部分,如果在業(yè)務(wù)層去處理相對(duì)比較簡(jiǎn)單,如果將細(xì)粒度權(quán)限管理統(tǒng)一在系統(tǒng)架構(gòu)級(jí)別去抽取,比較困難,即使抽取的功能可能也存在擴(kuò)展不強(qiáng)。
建議細(xì)粒度權(quán)限管理在業(yè)務(wù)層去控制。
比如:部門(mén)經(jīng)理只查詢本部門(mén)員工信息,在service接口提供一個(gè)部門(mén)id的參數(shù),controller中根據(jù)當(dāng)前用戶的信息得到該 用戶屬于哪個(gè)部門(mén),調(diào)用service時(shí)將部門(mén)id傳入service,實(shí)現(xiàn)該用戶只查詢本部門(mén)的員工。
3. 基于url攔截的方式實(shí)現(xiàn)
基于url攔截的方式實(shí)現(xiàn)在實(shí)際開(kāi)發(fā)中比較常用的一種方式。
對(duì)于web系統(tǒng),通過(guò)filter過(guò)慮器實(shí)現(xiàn)url攔截,也可以使用springmvc的攔截器實(shí)現(xiàn)基于url的攔截。
4. 使用權(quán)限管理框架實(shí)現(xiàn)
對(duì)于粗粒度權(quán)限管理,建議使用優(yōu)秀權(quán)限管理框架來(lái)實(shí)現(xiàn),節(jié)省開(kāi)發(fā)成功,提高開(kāi)發(fā)效率。
shiro就是一個(gè)優(yōu)秀權(quán)限管理框架。
總結(jié)
以上就是本文關(guān)于權(quán)限控制之粗粒度與細(xì)粒度概念及實(shí)現(xiàn)簡(jiǎn)單介紹的全部?jī)?nèi)容,希望對(duì)大家有所幫助。有什么問(wèn)題可以隨時(shí)留言,小編會(huì)及時(shí)回復(fù)大家的。感謝各位對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
DLL(Dynamic Linkable Library) 詳解說(shuō)明
DLL文件(Dynamic Linkable Library 即動(dòng)態(tài)鏈接庫(kù)文件),是一種不能單獨(dú)運(yùn)行的文件,它允許程序共享執(zhí)行特殊任務(wù)所必需的代碼和其他資源2008-12-12Hbuilder連遠(yuǎn)程接服務(wù)器上傳代碼的圖文教程
下面小編就為大家分享一篇Hbuilder連遠(yuǎn)程接服務(wù)器上傳代碼的圖文教程,具有很好的參考價(jià)值,一起跟隨小編過(guò)來(lái)看看吧,希望對(duì)大家有所幫助2017-11-11uniApp微信小程序使用騰訊地圖定位功能及getLocation需要在app.json中聲明permission字段問(wèn)
這篇文章主要介紹了uniApp微信小程序使用騰訊地圖定位功能及getLocation需要在app.json中聲明permission字段問(wèn)題解決,需要的朋友可以參考下2022-12-12軟件測(cè)試過(guò)程中常見(jiàn)的英文單詞匯總
這篇文章主要介紹了軟件測(cè)試過(guò)程中常見(jiàn)的英文單詞匯總,需要的朋友可以參考下2022-09-098個(gè)基于Lucene的開(kāi)源搜索引擎(推薦)
Lucene是一種功能強(qiáng)大且被廣泛使用的搜索引擎,以下列出8種基于Lucene的搜索引擎,你可以想象他們有多么強(qiáng)大2017-04-04詳解為什么現(xiàn)代系統(tǒng)需要一個(gè)新的編程模型
如今高要求的分布式系統(tǒng)的建造者遇到了不能完全由傳統(tǒng)的面向?qū)ο缶幊?OOP)模型解決的挑戰(zhàn),但這可以從Actor模型中獲益。2021-05-05