springboot手寫乙個rbac

2021-09-25 03:30:24 字數 616 閱讀 8718

對於springboot來說,可以利用一些框架實現rbac,例如spring security等。但是做專案的時候,如果要使用元件,不僅僅需要考慮元件能帶給我們什麼,而且還要考慮元件裡面那些東西是不想要的,以及學習成本等等。

現在我們就只需要簡單實現乙個基於api-頁面資源-角色-使用者的許可權管理系統。先來看看基本的原理。

整理所有的頁面資源和其依賴的api入資料庫

頁面資源的url固定以某個字首開頭,這樣就可以利用spring中的過濾***對該類url進行過濾。api包含url和method兩個部分

在過濾器的init方法中一次性載入所有的資源和api資訊

init方法在整個過濾器生命週期中只執行一次,這樣做可以實現對頁面資源的資料庫查詢只有一次。然後利用幾個hashmap將這些對應關係儲存起來即可。

在定義角色的時候,給角色分配頁面資源

角色與頁面資源的對應關係是多對多,所以字段列表(點分字串)的形式儲存。

使用者可以被賦予多種角色

使用者與角色的對應關係也是多對多的。

使用者登入的時候,將使用者的角色資訊儲存到token中,防篡改的話可以放到伺服器快取中

在過濾器攔截到相關的請求之後,就對當前使用者許可權做處理,如果當前使用者沒有許可權,就跳轉到無許可權介面。

Spring Boot 動手寫乙個 Start

我們在使用springboot 專案時,引入乙個springboot start依賴,只需要很少的 或者不用任何 就能直接使用預設配置,再也不用那些繁瑣的配置了,感覺特別神奇。我們自己也動手寫乙個start.pom 檔案如下 org.springframework.bootgroupid sprin...

Spring Boot 動手寫乙個 Start

我們在使用springboot 專案時,引入乙個springboot start依賴,只需要很少的 或者不用任何 就能直接使用預設配置,再也不用那些繁瑣的配置了,感覺特別神奇。我們自己也動手寫乙個start.pom 檔案如下 org.springframework.bootgroupid sprin...

手寫乙個Tomcat

1 工程截圖 2 封裝請求物件 通過輸入流,對http協議進行解析,拿到了http請求頭的方法和url author wangjie version 2018 11 9 封裝請求物件 通過輸入流,對http協議進行解析,拿到http請求頭的方法和url 3 封裝響應物件 基於http協議的格式進行輸...