權(quán)限管理是做B端后臺(tái)管理系統(tǒng)比較常見(jiàn)也繞不開(kāi)的一個(gè)模塊,這個(gè)模塊保證不同類型使用者能夠合理使用管理后臺(tái),相對(duì)來(lái)說(shuō)是后臺(tái)系統(tǒng)一個(gè)比較復(fù)雜的模塊;在我們平日使用的C端產(chǎn)品中,權(quán)限管理也是無(wú)處不在的,只是相對(duì)管理系統(tǒng)來(lái)說(shuō)會(huì)簡(jiǎn)單得多;
權(quán)限管理的業(yè)務(wù)使用場(chǎng)景是:某一個(gè)組織內(nèi)部的不同類型的人員,需要在一個(gè)系統(tǒng)里面協(xié)同完成某些業(yè)務(wù)操作;同時(shí)這些不同類型的人員需要有不同的使用模塊,操作不同的模塊資源;
在后臺(tái)系統(tǒng)中,權(quán)限的表現(xiàn)方式是,控制某個(gè)用戶對(duì)系統(tǒng)某個(gè)功能模塊的操作、對(duì)系統(tǒng)中存在文件的增刪改查、對(duì)某個(gè)菜單的訪問(wèn)、對(duì)頁(yè)面上某個(gè)按鈕某個(gè)圖片的可見(jiàn)性、對(duì)某些數(shù)據(jù)的可見(jiàn)性等;
通過(guò)權(quán)限的表現(xiàn)方式,我們可以歸納權(quán)限管理包含兩個(gè)部分:控制用戶訪問(wèn)某些功能、控制用戶訪問(wèn)某些數(shù)據(jù);系統(tǒng)功能、系統(tǒng)數(shù)據(jù)都是系統(tǒng)資源的表現(xiàn)形式,實(shí)則權(quán)限控制的本質(zhì)就是就是用戶與系統(tǒng)資源的配置;
我們通過(guò)一個(gè)例子來(lái)說(shuō)明;
在論壇時(shí)代,進(jìn)入某個(gè)論壇,有很多用戶在某個(gè)討論互聯(lián)網(wǎng)的版塊發(fā)帖、跟帖、評(píng)論等;但是不同用戶可操作的內(nèi)容是不同的;有的用戶可對(duì)版塊內(nèi)的帖子進(jìn)行刪除操作,甚至可以禁止某些用戶評(píng)論跟帖,而有的用戶只能發(fā)帖、評(píng)論;我們都知道,可以刪帖、禁止跟帖評(píng)論操作的一般都是版主、管理員之類的,發(fā)帖、評(píng)論的都是一些普通用戶;
這個(gè)例子中,發(fā)帖、跟帖評(píng)論、刪帖、禁止發(fā)言都是一些操作的權(quán)限,而有的用戶有著數(shù)個(gè)權(quán)限,有的用戶只有區(qū)區(qū)一個(gè)權(quán)限;
到這里,我們就需要引入一個(gè)基于用戶的新的概念:用戶角色;
用戶角色是什么;用戶角色是一定數(shù)量的權(quán)限的集合,一定操作權(quán)限的載體;說(shuō)直白點(diǎn),角色就是不同權(quán)限組合的載體;
例子中版主、管理員就是角,發(fā)帖、跟帖評(píng)論、刪帖、禁止發(fā)言就是權(quán)限;對(duì)于論壇來(lái)說(shuō),不論是版主還是普通成員,他們都是用戶,只不過(guò)各自的權(quán)限不同;但系統(tǒng)設(shè)計(jì)不可能根據(jù)不同的類型的用戶單獨(dú)去配置功能權(quán)限,如果后期增添功能,就需要分別對(duì)不同類型的用戶配置不同的功能權(quán)限;這個(gè)操作不論是通過(guò)誰(shuí)來(lái)操作,都無(wú)法做到靈活配置;
用戶通過(guò)角色與權(quán)限進(jìn)行關(guān)聯(lián),構(gòu)造成“用戶-角色-權(quán)限”的授權(quán)模型;在這個(gè)模型中,用戶與角色之間,角色與權(quán)限之間,一般是多對(duì)多的關(guān)系;一個(gè)用戶擁有若干角色,一個(gè)角色擁有若干權(quán)限;
要給某個(gè)用戶授予不同的權(quán)限,不需要直接將權(quán)限授予用戶,將不同角色賦予給用戶即可;授予用戶不同角色,即是授予用戶不同權(quán)限;
說(shuō)到這里,基本對(duì)用戶權(quán)限做了一個(gè)完整的梳理,我們?cè)诳刂朴脩舨僮鞴δ軝?quán)限的時(shí)候,可以通過(guò)授予不同角色不同的功能權(quán)限,然后通過(guò)對(duì)不同類型用戶授予不同的用戶角色,這樣,就控制了不同用戶之間的不同功能操作權(quán)限,形成一個(gè)功能權(quán)限的完整閉環(huán);
那么在實(shí)際設(shè)計(jì)與操作中是如何表現(xiàn)的;
系統(tǒng)在初始化時(shí)會(huì)賦予某些用戶管理員角色,管理員有著系統(tǒng)所有模塊的功能操作權(quán)限;管理員通過(guò)創(chuàng)建不同用戶角色,給不同用戶角色授予不同功能權(quán)限;同時(shí)創(chuàng)建子賬號(hào)用戶,給這些子賬號(hào)用戶授予不同用戶角色,那么不同用戶即可擁有不同操作權(quán)限;
即流程就是:1)、管理員創(chuàng)建用戶角色;2)、管理員創(chuàng)建子賬號(hào);3)、授予不同用戶不同用戶角色;4)、不同用戶擁有不同功能操作權(quán)限;
前面我們說(shuō)到,通過(guò)權(quán)限的表現(xiàn)方式,我們可以歸納權(quán)限管理包含兩個(gè)部分:控制用戶訪問(wèn)某些功能、控制用戶訪問(wèn)某些數(shù)據(jù);實(shí)則系統(tǒng)權(quán)限應(yīng)該包含兩個(gè)模塊:功能模塊、數(shù)據(jù)模塊;
我們?cè)賮?lái)通過(guò)一個(gè)例子說(shuō)明;
某個(gè)管理系統(tǒng),有財(cái)務(wù)、銷售、客服等不同角色;
在銷售部門(mén),有不同級(jí)別的職位,不同職位的員工都能查看銷售額這個(gè)模塊的數(shù)據(jù);但是由于數(shù)據(jù)的重要性與商業(yè)價(jià)值,需要不同級(jí)別的員工能夠看到不同的數(shù)據(jù);
例如總監(jiān)可以看到全國(guó)的銷售額,該總監(jiān)下屬某個(gè)負(fù)責(zé)華東業(yè)務(wù)的總經(jīng)理只能看到華東地區(qū)的銷售額,該總監(jiān)下屬某個(gè)負(fù)責(zé)華北業(yè)務(wù)的總經(jīng)理只能看到華北地區(qū)的銷售額;總監(jiān)、區(qū)域經(jīng)理,都能看到銷售額這個(gè)模塊的數(shù)據(jù),但由于職位不同,能夠看到的數(shù)據(jù)范圍也就不同;
在財(cái)務(wù)部門(mén)、客服部門(mén),同樣有著相同的問(wèn)題存在;財(cái)務(wù)總監(jiān)、審計(jì)員能夠看到的數(shù)據(jù)范圍是不一樣的,客服主管、客服經(jīng)理能夠看到的數(shù)據(jù)范圍也是不一樣的;
產(chǎn)生這種不同職位看到不同數(shù)據(jù)范圍的需求,是公司內(nèi)部組織架構(gòu)的職能結(jié)構(gòu)決定的;
上面的兩個(gè)例子可以看到,對(duì)于業(yè)務(wù)不復(fù)雜的產(chǎn)品,僅從功能去設(shè)計(jì)是足夠的;當(dāng)系統(tǒng)變得復(fù)雜的時(shí)候,就需要在功能限制的基礎(chǔ)上,加上數(shù)據(jù)范圍的限制;可以理解為,數(shù)據(jù)權(quán)限是對(duì)功能權(quán)限的補(bǔ)充,兩者并不是獨(dú)立的分類,而是權(quán)限管理中相輔相成的兩個(gè)部分;
所以在涉及到管理系統(tǒng)的權(quán)限管理模塊時(shí),其實(shí)是包含兩個(gè)模塊的:功能權(quán)限模塊、數(shù)據(jù)權(quán)限模塊;
那么我們?cè)谠O(shè)計(jì)權(quán)限管理模塊時(shí),應(yīng)該怎么來(lái)劃分功能權(quán)限和數(shù)據(jù)權(quán)限呢;可以從兩個(gè)維度來(lái)做劃分:橫向與縱向;橫向劃分對(duì)應(yīng)功能權(quán)限,縱向劃分對(duì)應(yīng)數(shù)據(jù)權(quán)限;
橫向按組織內(nèi)部組織架構(gòu)業(yè)務(wù)結(jié)構(gòu)類型來(lái)劃分,前提是公司在實(shí)際業(yè)務(wù)運(yùn)轉(zhuǎn)中對(duì)內(nèi)部不同類型、結(jié)構(gòu)已經(jīng)作了分割,例如運(yùn)營(yíng)部、銷售部、客服部,不同部門(mén)看到的功能模塊不同;
縱向按照不同角色的等級(jí)關(guān)系進(jìn)行劃分,數(shù)據(jù)權(quán)限的劃分往往基于公司內(nèi)部組織架構(gòu)的職能結(jié)構(gòu)進(jìn)行劃分,從而滿足管理的需求;例如銷售總監(jiān)和銷售經(jīng)理在某些重疊功能模塊上看到的數(shù)據(jù)范圍不同;
處理好功能權(quán)限和數(shù)據(jù)權(quán)限對(duì)系統(tǒng)資源的分配,不同用戶角色的劃分及用戶角色之間的關(guān)聯(lián)就有較為清晰的界限,為后期的產(chǎn)品迭代提供足夠可擴(kuò)展空間;
說(shuō)到這里,那么問(wèn)題來(lái)了,功能權(quán)限和數(shù)據(jù)權(quán)限的區(qū)別到底是什么,兩者的邊界到底在哪里,如何做兩者之間的界限劃分;
我的理解是,其實(shí)功能權(quán)限和數(shù)據(jù)權(quán)限很難做到非常清晰的界限劃分,不同公司內(nèi)部不同業(yè)務(wù)類型,會(huì)決定不同功能權(quán)限、數(shù)據(jù)權(quán)限的界限劃分,我們只有在具體問(wèn)題時(shí)做具體分析;有一點(diǎn)需要明確的是,兩者并不是相互獨(dú)立的關(guān)系,而是一種相輔相成的關(guān)系,是為了能夠更好地管理內(nèi)部寫(xiě)作與提升內(nèi)部的協(xié)作效率;