關于產品權限管理系統

權限管理是做B端后臺管理系統比較常見也繞不開的一個模塊,這個模塊保證不同類型使用者能夠合理使用管理后臺,相對來說是后臺系統一個比較復雜的模塊;在我們平日使用的C端產品中,權限管理也是無處不在的,只是相對管理系統來說會簡單得多;

權限管理的業務使用場景是:某一個組織內部的不同類型的人員,需要在一個系統里面協同完成某些業務操作;同時這些不同類型的人員需要有不同的使用模塊,操作不同的模塊資源;

在后臺系統中,權限的表現方式是,控制某個用戶對系統某個功能模塊的操作、對系統中存在文件的增刪改查、對某個菜單的訪問、對頁面上某個按鈕某個圖片的可見性、對某些數據的可見性等;

通過權限的表現方式,我們可以歸納權限管理包含兩個部分:控制用戶訪問某些功能、控制用戶訪問某些數據;系統功能、系統數據都是系統資源的表現形式,實則權限控制的本質就是就是用戶與系統資源的配置;

我們通過一個例子來說明;

在論壇時代,進入某個論壇,有很多用戶在某個討論互聯網的版塊發帖、跟帖、評論等;但是不同用戶可操作的內容是不同的;有的用戶可對版塊內的帖子進行刪除操作,甚至可以禁止某些用戶評論跟帖,而有的用戶只能發帖、評論;我們都知道,可以刪帖、禁止跟帖評論操作的一般都是版主、管理員之類的,發帖、評論的都是一些普通用戶;

這個例子中,發帖、跟帖評論、刪帖、禁止發言都是一些操作的權限,而有的用戶有著數個權限,有的用戶只有區區一個權限;

到這里,我們就需要引入一個基于用戶的新的概念:用戶角色;

用戶角色是什么;用戶角色是一定數量的權限的集合,一定操作權限的載體;說直白點,角色就是不同權限組合的載體;

例子中版主、管理員就是角,發帖、跟帖評論、刪帖、禁止發言就是權限;對于論壇來說,不論是版主還是普通成員,他們都是用戶,只不過各自的權限不同;但系統設計不可能根據不同的類型的用戶單獨去配置功能權限,如果后期增添功能,就需要分別對不同類型的用戶配置不同的功能權限;這個操作不論是通過誰來操作,都無法做到靈活配置;

用戶通過角色與權限進行關聯,構造成“用戶-角色-權限”的授權模型;在這個模型中,用戶與角色之間,角色與權限之間,一般是多對多的關系;一個用戶擁有若干角色,一個角色擁有若干權限;

要給某個用戶授予不同的權限,不需要直接將權限授予用戶,將不同角色賦予給用戶即可;授予用戶不同角色,即是授予用戶不同權限;

說到這里,基本對用戶權限做了一個完整的梳理,我們在控制用戶操作功能權限的時候,可以通過授予不同角色不同的功能權限,然后通過對不同類型用戶授予不同的用戶角色,這樣,就控制了不同用戶之間的不同功能操作權限,形成一個功能權限的完整閉環;

那么在實際設計與操作中是如何表現的;

系統在初始化時會賦予某些用戶管理員角色,管理員有著系統所有模塊的功能操作權限;管理員通過創建不同用戶角色,給不同用戶角色授予不同功能權限;同時創建子賬號用戶,給這些子賬號用戶授予不同用戶角色,那么不同用戶即可擁有不同操作權限;

即流程就是:1)、管理員創建用戶角色;2)、管理員創建子賬號;3)、授予不同用戶不同用戶角色;4)、不同用戶擁有不同功能操作權限;

前面我們說到,通過權限的表現方式,我們可以歸納權限管理包含兩個部分:控制用戶訪問某些功能、控制用戶訪問某些數據;實則系統權限應該包含兩個模塊:功能模塊、數據模塊;

我們再來通過一個例子說明;

某個管理系統,有財務、銷售、客服等不同角色;

在銷售部門,有不同級別的職位,不同職位的員工都能查看銷售額這個模塊的數據;但是由于數據的重要性與商業價值,需要不同級別的員工能夠看到不同的數據;

例如總監可以看到全國的銷售額,該總監下屬某個負責華東業務的總經理只能看到華東地區的銷售額,該總監下屬某個負責華北業務的總經理只能看到華北地區的銷售額;總監、區域經理,都能看到銷售額這個模塊的數據,但由于職位不同,能夠看到的數據范圍也就不同;

在財務部門、客服部門,同樣有著相同的問題存在;財務總監、審計員能夠看到的數據范圍是不一樣的,客服主管、客服經理能夠看到的數據范圍也是不一樣的;

產生這種不同職位看到不同數據范圍的需求,是公司內部組織架構的職能結構決定的;

上面的兩個例子可以看到,對于業務不復雜的產品,僅從功能去設計是足夠的;當系統變得復雜的時候,就需要在功能限制的基礎上,加上數據范圍的限制;可以理解為,數據權限是對功能權限的補充,兩者并不是獨立的分類,而是權限管理中相輔相成的兩個部分;

所以在涉及到管理系統的權限管理模塊時,其實是包含兩個模塊的:功能權限模塊、數據權限模塊;

那么我們在設計權限管理模塊時,應該怎么來劃分功能權限和數據權限呢;可以從兩個維度來做劃分:橫向與縱向;橫向劃分對應功能權限,縱向劃分對應數據權限;

橫向按組織內部組織架構業務結構類型來劃分,前提是公司在實際業務運轉中對內部不同類型、結構已經作了分割,例如運營部、銷售部、客服部,不同部門看到的功能模塊不同;

縱向按照不同角色的等級關系進行劃分,數據權限的劃分往往基于公司內部組織架構的職能結構進行劃分,從而滿足管理的需求;例如銷售總監和銷售經理在某些重疊功能模塊上看到的數據范圍不同;

處理好功能權限和數據權限對系統資源的分配,不同用戶角色的劃分及用戶角色之間的關聯就有較為清晰的界限,為后期的產品迭代提供足夠可擴展空間;

說到這里,那么問題來了,功能權限和數據權限的區別到底是什么,兩者的邊界到底在哪里,如何做兩者之間的界限劃分;

我的理解是,其實功能權限和數據權限很難做到非常清晰的界限劃分,不同公司內部不同業務類型,會決定不同功能權限、數據權限的界限劃分,我們只有在具體問題時做具體分析;有一點需要明確的是,兩者并不是相互獨立的關系,而是一種相輔相成的關系,是為了能夠更好地管理內部寫作與提升內部的協作效率;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容