深入討論通用許可權元件的理論和設計實現。

johnnylzb發表於2008-02-03
本人最近正在為公司的多個專案(包括未來專案)做通用的許可權元件,在本論壇上看到”dunel”大俠的一個帖子 http://www.jdon.com/jivejdon/thread/13450.html,然後才註冊並發表此 話題,歡迎大家耐心閱讀並指正。

目前已經發布了一個版本並供幾個專案使用,先簡單介紹一下元件的情況:

1.模式:建立在RBAC理論技術上的許可權模式

2.技術:是以Java編寫的一個元件(計劃在下一個版本做成一個框架)

3.結構:包括兩部分:
(A)許可權配置管理平臺,一個Web應用(即一個war包),用於註冊受控資源,管理角色,和授權(把角色指派給宿主系統的使用者),本平臺是可選的
(B)許可權服務元件,一個嵌入式元件(即一個jar包),提供訪問控制服務和許可權配置服務(後者供宿主系統透過介面呼叫實現許可權配置管理,可以代替許可權配置管理平臺)

4.實現機制:許可權相關資料與宿主系統的資料邏輯上式獨立的,宿主系統透過嵌入許可權元件,本地呼叫元件提供的相關服務介面實現許可權配置管理和訪問控制,元件提供四種服務:
(A)授權服務:使用者訪問宿主系統的受控資源時,宿主系統把使用者ID和被訪問資源ID傳遞到授權服務介面,授權服務介面返回是否可以訪問的結果資訊,宿主系統可以一次載入使用者的所有許可權資訊,也可以在每次使用者訪問時才呼叫授權服務介面。
(B)實體管理服務:提供受控資源(實體)的增、刪、改、查等管理服務。
(C)角色管理服務:提供角色的增、刪改、查管理服務和為角色配置受控資源的服務
(D)授權管理服務:提供為宿主系統使用者指派、移除角色的服務。
宿主系統可以把UI相關的實體名以URI來註冊,許可權元件提供預設的Filter進行攔截,對API的實體名以API對應的方法名的全限定名進行註冊,許可權元件提供預設的Interceptor以AOP的方式進行攔截,這樣,宿主系統就不需要在業務層和頁面層編寫與許可權控制相關的程式碼,許可權這個功能程式設計了一個可以切入和移除的Aspect。

5.功能範圍:目前只能控制功能許可權,資料許可權控制還沒實現。

相關文章