1. 程式人生 > >Simba框架之許可權管理模組--simba-permission

Simba框架之許可權管理模組--simba-permission

許可權管理,相信大家都不陌生,幾乎所有的系統都會涉及到,Spring Security, Apache Shiro,相信大家都接觸過或者聽說過,是大家用的最多的開源許可權管理元件,但是這兩個元件都相對而言,功能太過於強大,強大的功能自然就會產生複雜性。但是很多系統其實許可權管理比較簡單,沒有必要增加如此強大的元件。

Simba框架使用的許可權管理相對而言比較簡單,其實主要就是通過兩個攔截器實現的許可權管理,登入攔截(LoginInterceptor)和許可權攔截(PermissionInterceptor),攔截器主要是基於使用者訪問的url進行攔截的。

Simba框架的許可權管理主要是基於4種物件實現的,許可權--角色--使用者--機構。

許可權,就是我們的url,當然也可以是隨便一種識別符號,當用戶擁有這個許可權,就可以訪問這個url或者可以訪問這個識別符號代表的按鈕Button等,許可權為了便於管理,採用的樹形結構設計。

角色,將建立好的許可權分給角色。角色代表的就是一組許可權的集合。

使用者,將角色分配給使用者,使用者就擁有了所有角色的許可權集合。

機構,也可以將角色分配給機構,機構類似於使用者組的感念,為了便於管理,也採用了樹形結構設計。

對於一個機構下的使用者而言,他擁有的角色是 自己使用者所擁有的角色+所在機構擁有的角色。

所以在使用中,如果所有使用者都具有的角色就可以直接分配給他們所在的機構,就不用給每個使用者都分配一個相同的角色了。

使用者和機構的話,我相信不同的系統所具有的屬性,會有所不同,沒辦法設計出一個使用者和機構,能夠滿足所有系統需要的屬性,所以這裡引入了擴充套件屬性,可以根據配置檔案中的配置,動態在擴充套件屬性表裡增加資料庫欄位,

結構為key1:value1,key2:value2。key為資料庫的欄位名,value為頁面顯示的描述,key如果以_r結尾,代表此欄位必填,如果資料庫中沒有此欄位,會在服務啟動的時候,自動新增。

為了方便在測試環境中配置好所有的許可權資訊,直接移植到正式環境中,特意提供了匯出sql指令碼功能,匯出配置好的許可權數

據,直接連線正式環境的資料庫,執行匯出的sql就可以把所有的配置移植到正式環境中。

框架除了提到了上面說的登入攔截器之外,還提供了幾個攔截器,

允許訪問的url攔截器(AllowInterceptor),禁止訪問的url攔截器(ForbidInterceptor),允許訪問的ip攔截器(IPInterceptor),

如果自己想自定義攔截器,也是非常簡單的,框架封裝好了,您只需要實現一個介面HandlerInterceptor,然後修改配置檔案

即可。具體可以參考框架已經提供的攔截器實現自定義攔截器。攔截器是使用反射機制在服務啟動的時候注入的。interceptorClass配置類的全路徑。url配置攔截器要攔截的url。

Simba框架的許可權管理模組,還自帶了登入介面,選單介面,登入後的主頁及歡迎頁,當然,您也可以在配置檔案中修改這些頁面,使用您自己設計的頁面,

page.login登入頁面,

page.index為登入成功之後的頁面,

page.home為登入成功之後進入的頁面中心的歡迎頁面,

page.error為異常頁面,

page.forbid為訪問拒絕頁面,

 page.no為找不到資源頁面

同時提供了Controller中自定義引數的功能,您只需要實現一個介面,如下:

您就可以在Controller中,這樣獲取到他對應的值

非常方便,避免每個Controller中都要通過一段重複的程式碼來獲取他的值。

前端index.js中也提供了很多常用的js方法,您可以在頁面中使用top.來執行這些js。