- 《架構世界》2020微服務刊:微服務分布式事務實戰
- 普元信息
- 880字
- 2020-09-03 11:23:39
二、應用權限模型設計
首先,我們要了解一下,什么是權限。權限就是用戶對某些資源的控制能力。所以,模型上我們就有了一個抽像的資源概念。
資源按類型具化,可能是用戶在門戶上可見的菜單,或者是頁面上可見可點擊的某些按鈕,又或者是用戶在應用后端可以調用的某個接口等。
用戶通過角色,與這些資源建立了關聯,我們才能在系統中通過用戶找到這些資源,然后對它進行控制。
因此,用戶,角色,資源的關系,就是一個用戶可分配多個角色,一個角色,可以關聯多個資源。如下圖所示:

為了方便角色進行資源授權的管理,我們又提出了幾個服務于它們的概念:角色模板,權限模板,資源組。
資源組,顧名思義,就是資源的分組。它是一個樹狀模型,目前主要設計使用了三層。頂層的代表著某一塊的資源總集,比如某個子系統的資源總集。
權限模板,它通過關聯多個頂層的資源組,可以代表著某個范圍內的可授權資源總集。
角色模板關聯著權限模板,從它的這個資源集合中挑出了一部分。
角色則是在創建的時候,復制角色模板的這些資源授權。它的資源授權可以修改,但可授權資源仍為權限模板代表的總集。

資源的授權如上圖所示。頂層的資源組代表著某一塊的資源總集,第二層則代表不同的資源類型,如菜單,功能,環境等。第三層代表著模塊,比如機構管理模塊的菜單。第三層的資源組之下,才關聯具體的資源。對角色或者角色模板進行資源授權配置時,只需要找到對應的資源類型與模塊,再找到相應的資源,點擊是否勾選即可完成授權,非常地直觀。
用戶如何與資源關聯?如下圖,這里我們假設了一個示例。

某應用集成了
,其下又分了三個子系統。為了方便資源的管理,我們為每個子系統設置了一個頂層的資源組,然后為它配置了下層資源組與資源。然后,我們設置了兩個權限模板,其中一個負責 與子系統一的資源,另一個則負責三個子系統的資源。基于兩個權限模板,我們分別創建了角色一與角色二。三個用戶中,用戶一分配了角色一,用戶二分配了角色一與二,用戶三分配了角色二。用戶一可分配 與子系統一中的資源,用戶二可分配所有資源,用戶三則只能分配三個子系統的資源。這樣,資源的組合與隔離,會變得相當方便與直觀。