溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SpringBootSecurity中URL動(dòng)態(tài)權(quán)限是怎樣的

發(fā)布時(shí)間:2021-09-28 09:36:33 來(lái)源:億速云 閱讀:104 作者:柒染 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)SpringBootSecurity中URL動(dòng)態(tài)權(quán)限是怎樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

動(dòng)態(tài)權(quán)限

前面討論用戶登錄認(rèn)證的時(shí)候,根據(jù)用戶名查詢用戶會(huì)將用戶擁有的角色一起查詢出來(lái),自動(dòng)實(shí)現(xiàn)判斷當(dāng)前登錄用戶擁有哪些角色??梢哉f(shuō)用戶與角色之間的動(dòng)態(tài)配置和判斷security做的非常不錯(cuò)。不過(guò)在配置方法級(jí)別的權(quán)限的時(shí)候,使用注解雖然是一種比較優(yōu)雅的方式,但是要求在開(kāi)發(fā)的時(shí)候就知道當(dāng)前url對(duì)應(yīng)哪些角色,無(wú)法實(shí)現(xiàn)動(dòng)態(tài)的配置,而實(shí)際的項(xiàng)目中,每個(gè)鏈接允許哪些角色訪問(wèn)也不是一成不變的,因此下面我們來(lái)實(shí)現(xiàn)自己的路由判斷。

創(chuàng)建表

前面的討論中,我們創(chuàng)建了用戶表,角色表和用戶角色中間表,下面來(lái)創(chuàng)建菜單功能表,并把現(xiàn)在有的url鏈接添加進(jìn)去:

SpringBootSecurity中URL動(dòng)態(tài)權(quán)限是怎樣的

然后創(chuàng)建角色菜單中間表,加入角色與url之間的對(duì)應(yīng)關(guān)系:

SpringBootSecurity中URL動(dòng)態(tài)權(quán)限是怎樣的

創(chuàng)建基礎(chǔ)類

首先去掉前面的方法級(jí)別權(quán)限的注解,然后創(chuàng)建菜單實(shí)體類:

SpringBootSecurity中URL動(dòng)態(tài)權(quán)限是怎樣的

創(chuàng)建查詢方法,根據(jù)url查詢次鏈接對(duì)應(yīng)的所有角色名稱:

SpringBootSecurity中URL動(dòng)態(tài)權(quán)限是怎樣的

對(duì)應(yīng)的sql語(yǔ)句如下:

SpringBootSecurity中URL動(dòng)態(tài)權(quán)限是怎樣的

路由動(dòng)態(tài)獲取角色

首先增加一個(gè)處理類,在收到訪問(wèn)的時(shí)候,動(dòng)態(tài)獲取當(dāng)前url的角色:

SpringBootSecurity中URL動(dòng)態(tài)權(quán)限是怎樣的

新建一個(gè)ObjectPostProcessor類,將這個(gè)處理類配置到其中:

SpringBootSecurity中URL動(dòng)態(tài)權(quán)限是怎樣的

最后將新建的ObjectPostProcessor類配置到權(quán)限配置方法中:

SpringBootSecurity中URL動(dòng)態(tài)權(quán)限是怎樣的

路由決策管理

用戶與角色是多對(duì)多的關(guān)系,url與角色也是多對(duì)多的關(guān)系,這里的設(shè)定是,只要用戶與url對(duì)應(yīng)的角色中有相同的存在,就表示用戶有訪問(wèn)的權(quán)限。首先看一下對(duì)應(yīng)判斷的處理類:

SpringBootSecurity中URL動(dòng)態(tài)權(quán)限是怎樣的

使用雙重for循環(huán)進(jìn)行判斷,并進(jìn)行結(jié)果投票。在注釋中可以看到,使用不同的方式會(huì)產(chǎn)生不同的策略。下一步在security配置類中配置路由策略方法:

SpringBootSecurity中URL動(dòng)態(tài)權(quán)限是怎樣的

除了UrlRoleAuthHandler類,其它決策類使用的都是security存在的類,最后在權(quán)限配置中配置決策管理:

SpringBootSecurity中URL動(dòng)態(tài)權(quán)限是怎樣的

測(cè)試

這樣動(dòng)態(tài)權(quán)限url就配置好了,根據(jù)上面方法中的數(shù)據(jù),可以登錄查看是否具有對(duì)應(yīng)的url權(quán)限,沒(méi)有配置的是否不具備權(quán)限。

代碼地址:https://gitee.com/blueses/spring-boot-security 11

關(guān)于SpringBootSecurity中URL動(dòng)態(tài)權(quán)限是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI