您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關SpringBootSecurity中URL動態權限是怎樣的,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
前面討論用戶登錄認證的時候,根據用戶名查詢用戶會將用戶擁有的角色一起查詢出來,自動實現判斷當前登錄用戶擁有哪些角色。可以說用戶與角色之間的動態配置和判斷security做的非常不錯。不過在配置方法級別的權限的時候,使用注解雖然是一種比較優雅的方式,但是要求在開發的時候就知道當前url對應哪些角色,無法實現動態的配置,而實際的項目中,每個鏈接允許哪些角色訪問也不是一成不變的,因此下面我們來實現自己的路由判斷。
前面的討論中,我們創建了用戶表,角色表和用戶角色中間表,下面來創建菜單功能表,并把現在有的url鏈接添加進去:
然后創建角色菜單中間表,加入角色與url之間的對應關系:
首先去掉前面的方法級別權限的注解,然后創建菜單實體類:
創建查詢方法,根據url查詢次鏈接對應的所有角色名稱:
對應的sql語句如下:
首先增加一個處理類,在收到訪問的時候,動態獲取當前url的角色:
新建一個ObjectPostProcessor類,將這個處理類配置到其中:
最后將新建的ObjectPostProcessor類配置到權限配置方法中:
用戶與角色是多對多的關系,url與角色也是多對多的關系,這里的設定是,只要用戶與url對應的角色中有相同的存在,就表示用戶有訪問的權限。首先看一下對應判斷的處理類:
使用雙重for循環進行判斷,并進行結果投票。在注釋中可以看到,使用不同的方式會產生不同的策略。下一步在security配置類中配置路由策略方法:
除了UrlRoleAuthHandler類,其它決策類使用的都是security存在的類,最后在權限配置中配置決策管理:
這樣動態權限url就配置好了,根據上面方法中的數據,可以登錄查看是否具有對應的url權限,沒有配置的是否不具備權限。
代碼地址:https://gitee.com/blueses/spring-boot-security 11
關于SpringBootSecurity中URL動態權限是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。