Matrxi-Web的權(quán)限設(shè)計(jì)是什么

Matrxi-Web的權(quán)限設(shè)計(jì)是什么,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司長(zhǎng)期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為旺蒼企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站制作,旺蒼網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

Matrxi-Web權(quán)限設(shè)計(jì)

對(duì)于一個(gè)后端系統(tǒng)來說,權(quán)限是基礎(chǔ)設(shè)施,是安全保障。沒有權(quán)限,系統(tǒng)可能隨時(shí)面臨各種風(fēng)險(xiǎn),所以權(quán)限設(shè)計(jì)對(duì)后端系統(tǒng)來說至關(guān)重要。在Javaweb開發(fā)中,有很多權(quán)限開發(fā)的框架,比如shrio、Spring security,但是都比較重量級(jí)。作為一個(gè)后端管理系統(tǒng)來說,用這樣的權(quán)限開發(fā)框架會(huì)拖慢開發(fā)進(jìn)度。所以在這個(gè)項(xiàng)目中,我寫了一個(gè)更簡(jiǎn)單的權(quán)限控制框架,使用很簡(jiǎn)單。

權(quán)限設(shè)計(jì)思路

在Matrxi-Web項(xiàng)目中,請(qǐng)求需要攜帶Token,請(qǐng)求經(jīng)過Filter的時(shí)候(實(shí)際項(xiàng)目是使用Spring MVC的HandlerInterceptor),會(huì)判斷該請(qǐng)求Url是否有Token。如果有Token,解析Token獲取用戶信息,如果解析Token失敗,則進(jìn)入白名單判斷的邏輯,如果解析成功,則請(qǐng)求通過。如果請(qǐng)求不攜帶Token或者解析Token失敗,則判斷是否Url白名單里(比如登錄接口,swagger文檔等接口),如果請(qǐng)求不在url白名單內(nèi),則提示無(wú)權(quán)限訪問。

在Filter層初步判斷,如果請(qǐng)求通過,則請(qǐng)求進(jìn)入具體類的方法里,比如Controller的方法。如果類方法加上了自定義的注解@HasPermission,則該類在加載的時(shí)候會(huì)生成一個(gè)aroud類型的切面(即spring的aop),在執(zhí)行具體類的方法前,會(huì)判斷該用戶是否具有對(duì)該方法的調(diào)用權(quán)限,從而起到權(quán)限控制的作用。

Matrxi-Web的權(quán)限設(shè)計(jì)是什么  
 

RBAC

在權(quán)限控制數(shù)據(jù)層面,最常用的做法是RBAC(Role-Based Access Control),即基于角色的權(quán)限的控制。在RBAC中,權(quán)限與角色相關(guān)聯(lián),用戶通過成為適當(dāng)角色的成員而得到這些角色的權(quán)限。這就極大地簡(jiǎn)化了權(quán)限的管理。

RBAC  認(rèn)為授權(quán)實(shí)際上是Who 、What 、How 三元組之間的關(guān)系,也就是Who 對(duì)What 進(jìn)行How 的操作,也就是“主體”對(duì)“客體”的操作。

  • Who:是權(quán)限的擁有者或主體(如:User,Role)。
  • What:是操作或?qū)ο螅╫peration,object)。
  • How:具體的權(quán)限(Privilege,正向授權(quán)與負(fù)向授權(quán))。

在Matrix-Web項(xiàng)目中,也是使用了經(jīng)典的RBAC,即每個(gè)用戶擁有一個(gè)或多個(gè)角色,角色賦予具體的菜單操作權(quán)限。Martrix-Web的數(shù)據(jù)庫(kù)設(shè)計(jì)標(biāo)如下圖所示:

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-ziItvtN3-1590667416151)(https://static.javajike.com/img/2020/05/matrix/matrix-web009.jpg)]

用戶Id(user_id)和角色I(xiàn)d(role_id)綁定,角色I(xiàn)d(role_id)和menu_code(菜單編碼綁定),所以在創(chuàng)建用戶的時(shí)候需要錄入用戶的角色,而角色又需要綁定權(quán)限。前端界面錄入權(quán)限按鈕,展示圖如下:[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-4S0rbHyf-1590667416151)(https://static.javajike.com/img/2020/05/matrix/mw010.jpg)]

用戶綁定角色,展示圖如下:[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-aRbyW5HT-1590667416152)(https://static.javajike.com/img/2020/05/matrix/mw011.jpg)]

 

Token設(shè)計(jì)

在系統(tǒng)設(shè)置中,有一個(gè)重要的東東是Token,Token代表了用戶,幾乎所有的請(qǐng)求都需要攜帶Token。那么Token是怎么來的呢?它是根據(jù)用戶名生成的。那么什么情況會(huì)生產(chǎn)呢?用戶登錄成功后,生成Token,返回給瀏覽器,瀏覽器存儲(chǔ)在LocalStorage里面,后續(xù)的所有請(qǐng)求必須攜帶Token。這樣根據(jù)Token,服務(wù)端就能知道每個(gè)請(qǐng)求的用戶是誰(shuí),從而判斷該請(qǐng)求的用戶是否有權(quán)限。

Matrxi-Web的權(quán)限設(shè)計(jì)是什么  
 

上面的幾個(gè)小結(jié)講述了Matrix-web整體實(shí)現(xiàn)的權(quán)限控制的思路。現(xiàn)在來做一下總結(jié):

  • 首先,用戶需要登錄,填用戶名、密碼,后端接收到登錄請(qǐng)求,進(jìn)行用戶、密碼的校驗(yàn),校驗(yàn)成功后則根據(jù)用戶名生成Token,并返回給瀏覽器。
  • 瀏覽器收到Token后,會(huì)存儲(chǔ)在本地的LocalStorge里。
  • 后續(xù)瀏覽器發(fā)起請(qǐng)求時(shí)都攜帶該Token,請(qǐng)求達(dá)到后端后,會(huì)在Filter進(jìn)行判斷,首選判斷是否為白名單url(比如登錄接口url),如果是則放行;否則進(jìn)入Token驗(yàn)證。如果有Token且解析成功,則放行,否則,返回?zé)o權(quán)限訪問。
  • Filter判斷后,請(qǐng)求達(dá)到具體的Controller層,如果在Controller層上加上了權(quán)限判斷的注解,則生成代理類。代理類在執(zhí)行具體方法前會(huì)根據(jù)Token判斷權(quán)限。
    • 取出用戶的Token并解析得到該請(qǐng)求的userId,根據(jù)userId在從存儲(chǔ)層獲取用戶的權(quán)限點(diǎn)。權(quán)限控制是RBAC這種方式實(shí)現(xiàn)的。
    • 獲取到用戶權(quán)限點(diǎn)后,獲取權(quán)限判斷的注解的權(quán)限信息,看用戶權(quán)限點(diǎn)是否包含權(quán)限注解的權(quán)限信息,如果包含,則權(quán)限校驗(yàn)通過,否則則請(qǐng)求返回?zé)o權(quán)限。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

網(wǎng)站題目:Matrxi-Web的權(quán)限設(shè)計(jì)是什么
網(wǎng)站路徑:http://muchs.cn/article34/ppjspe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google手機(jī)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、電子商務(wù)外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)