后臺管理系統(tǒng)也需要微服務化
痛點一:龐大的后臺管理系統(tǒng)
任何一個公司的系統(tǒng)總是免不了需要很多后臺功能,隨著業(yè)務的發(fā)展,營銷活動管理后臺,短信模板后臺,網(wǎng)站內(nèi)容管理后臺......最后會變成一個異常龐大而難以維護的系統(tǒng)。往往光菜單就有幾十上百個。每次修改跟新增一個簡單的功能都是一場災難。
痛點二:各自獨立的后臺管理系統(tǒng)
如果公司內(nèi)部有多條產(chǎn)品線,每個產(chǎn)品線都有自己的后臺,往往都各自維護著各自的后臺權(quán)限體系,這樣導致每個人要記住大量的賬號密碼。如果公司來了新領導,光開通賬號就要好幾天。
針對上述兩個問題,自然而然的會想到,我們首先需要把后臺管理系統(tǒng)拆成多個子系統(tǒng),但是我們不需要維護多套用戶與權(quán)限體系,此時我們需要一個單點登錄系統(tǒng)來解決問題。該系統(tǒng)應該提供統(tǒng)一的登錄與系統(tǒng)導航頁面,統(tǒng)一的身份認證、以及統(tǒng)一的賬戶管理和權(quán)限管理。

我們把該系統(tǒng)分為三大模塊
管理員模塊:賬號,角色,權(quán)限分配,部門信息
用戶模塊:統(tǒng)一的登錄頁面,統(tǒng)一的系統(tǒng)導航頁,統(tǒng)一的會話管理
認證模塊:提供認證的客戶端以及認證的接口
管理員模塊
關(guān)于基本的后臺權(quán)限管理功能,有大量的開源系統(tǒng)可以借鑒。這里只強調(diào)幾個重點:
1.管理員的分級管理。
如果需要集成的系統(tǒng)比較少,涉及到的用戶不多,那么可以只設置一個超級管理員,該管理員負責所有的賬號,角色,以及權(quán)限分配。
如果需要集成幾十個系統(tǒng),涉及到的用戶很多,則必須考慮設置兩種管理員,超級管理員和普通管理員,普通管理員也具備創(chuàng)建賬號與分配權(quán)限的功能,但是普通管理員只能分配自己所擁有的權(quán)限。
例如我們有一個后臺坐席系統(tǒng),坐席人員有上百人,那么我們應該為坐席管理員增加一個普通管理員的權(quán)限,讓他自己維護坐席人員的賬號和權(quán)限。
2.管理員賬號與用戶賬號的分開管理。
可以考慮分開兩張表管理或者加一個標志位。
3.權(quán)限的粒度
3.1頁面元素權(quán)限
菜單級別的權(quán)限一般跟角色綁定,在后臺可以為某一個角色分配菜單以及按鈕的權(quán)限。需要子系統(tǒng)讀取認證接口展示菜單項。
3.2數(shù)據(jù)權(quán)限
數(shù)據(jù)權(quán)限一般跟部門掛鉤,但是必須子系統(tǒng)在代碼級別支持。
3.3接口權(quán)限
如果子系統(tǒng)采用的是前后端分離的架構(gòu),那么除了菜單層面需要限制以外,接口層面也需要進行權(quán)限管理。
3.4其他權(quán)限
假如子系統(tǒng)是一個數(shù)據(jù)庫查詢系統(tǒng),某個用戶可以訪問哪個數(shù)據(jù)庫表,這種權(quán)限的維護放到子系統(tǒng)自己維護。
4.角色-用戶反查