在做b端產品夯秃,不可避免的遇到權限管理,權限設計堤舒,根據(jù)什么樣的角色色建,授予什么樣的權限,然而權限還涉及到數(shù)據(jù)權限和功能權限舌缤,在說什么是權限箕戳,先引入角色的概念
什么是角色
角色,通俗的說国撵,你是什么樣的角色陵吸,例如你是管理員和普通用戶,是兩個角色介牙,管理員擁有所有的權限走越,而普通用戶只有部分權限。
管理員可以對普通用戶設置權限耻瑟,例如旨指,普通用戶A之前是可以查看和刪除評論功能,管理員修改了普通用戶A的權限喳整,不能進行刪除評論功能谆构,此時普通用戶A只有查看的權限。沒有刪除的權限框都,至于刪除按鈕是否顯示搬素,這是前端設計:
方案一:可以保留刪除按鈕,置灰操作或者點擊提示你沒有刪除權限;
方案二:隱藏刪除按鈕熬尺,普通用戶沒有刪除按鈕摸屠。
在說到管理員和普通用戶兩種角色,他們分別對應不同的權限粱哼,同事在一個系統(tǒng)里季二,會出現(xiàn)很多種角色,所有需要對角色進行管理揭措,增胯舷、刪、改绊含、查桑嘶、設置權限、最基本的五項躬充,其中刪除功能在設計過程中要引起注意逃顶,刪除角色,該角色中人員充甚,人員在系統(tǒng)中有操作行為產生了數(shù)據(jù)口蝠,直接刪除角色,會導致系統(tǒng)報錯津坑。
舉個簡單的例子妙蔗,在商城系統(tǒng)中,人員A在在系統(tǒng)中創(chuàng)建了商品疆瑰,而創(chuàng)建商品的是只有“店長”這個角色可以創(chuàng)建商品眉反,所以人員A就擁有店長這個角色。這里說明下穆役,人員A不是屬于店長這個角色寸五,而是擁有,是一個人員對應對個角色的關系耿币。此時把店長角色刪除了梳杏,而人員A只設置了一個店長這個角色的時候,該人員自然就報錯了淹接,他不屬于任何角色十性。
回到角色管理,一個角色對應哪些權限塑悼,而管理員擁有所有權限劲适,所以在設計權限管理的過程中要注意管理員和普通角色這兩種角色
功能權限設計
權限設計词疼,可以把一個系統(tǒng)所有的功能設計相應的權限景鼠,例如商城管理中,商品管理這個模塊泞坦,在設計權限過程中,就設計到如下權限:
a愕贡、新增商品
b草雕、修改編輯商品
c、商品的上架下架
d固以、刪除商品
e墩虹、查看商品
......
以上是功能權限,設計過程中嘴纺,可以將每個功能設計復選框败晴,管理員擁有所有權限浓冒,流程上實現(xiàn)方式如下:
創(chuàng)建用戶--->選擇角色--->設置權限栽渴。例如創(chuàng)建的用戶B可以新增商品,編輯商品稳懒,上下架商品闲擦,查看商品,但是出于安全考慮场梆,不允許用戶B刪除商品墅冷,設置用戶B對應的角色中不設置有刪除商品的功能。
設計功能權限應該注意什么
一或油、管理員權限
由于一個系統(tǒng)寞忿,一個平臺使用的人員較多,涉及到的角色也較多顶岸,會出現(xiàn)一個系統(tǒng)多個管理員腔彰,分級管理員的情況。另外由于系統(tǒng)處于開發(fā)中辖佣,會一直新增功能霹抛,如果管理員也是同普通角色一樣,勾選權限列表功能(全選)卷谈,雖然是全選杯拐,但是后續(xù)新開發(fā)的模塊,需要一一的去權限世蔗,一來麻煩端逼,二來設計的也不合理,所有管理員的權限污淋,不應該是同普通角色一樣去全選所有的角色裳食,而是默認所有的權限。
二芙沥、功能權限的顆粒度
功能權限的顆粒度需要多細诲祸,根據(jù)實際的場景去考慮浊吏,1)如果是對權限管控要求很嚴格的,需要細化功能權限救氯,例如政府部門系統(tǒng)的設計找田。2)BtoC產品,為了方便使用者理解和使用系統(tǒng)着憨,功能權限的設計就不需要很細墩衙,例如商城系統(tǒng)中商品的搜索功能,搜索商品功能有下拉根據(jù)什么屬性篩選甲抖,根據(jù)時間篩選漆改,查看列表等等,而作為用戶准谚,是可以搜索和查看商品挫剑,在設置搜索商品的權限。也就擁有是搜索功能權限柱衔,可以按時間搜索樊破,也可以按時間搜索。
三唆铐、更多需要注意的坑哲戚,待補充......
什么是數(shù)據(jù)權限
對于數(shù)據(jù)權限,接觸了很多次艾岂,一直不明白顺少,或者處于半明白狀態(tài),這里要感謝程序猿的指導王浴。
百度找了下數(shù)據(jù)權限的定義脆炎,并沒有,我去叼耙。
開發(fā)系統(tǒng)腕窥,各種功能,由功能產生了數(shù)據(jù)筛婉,但是數(shù)據(jù)并不是對所有人開放和顯示簇爆,所以就引入數(shù)據(jù)權限的概念。而數(shù)據(jù)權限在交互上是不會體現(xiàn)出來爽撒,在中小型系統(tǒng)上也不會顯示數(shù)據(jù)權限的設置頁入蛆。
引入一個例子方便理解:電商商城,由于后臺商城可以創(chuàng)建或維護不同的店鋪硕勿,有店鋪列表的概念哨毁,A店鋪產生的數(shù)據(jù),商品源武,訂單等不會在B店鋪中顯示出來扼褪,這就是數(shù)據(jù)權限對之進行了限制想幻。那有人會問,在功能設計過程中话浇,查詢功能不是進行了限制脏毯,這是是個誤導,用戶C可以查看商品幔崖,不沒有說明可以查哪些店鋪的商品:1)如果用戶C是個管理員食店,那他就擁有查看所有店鋪的商品,2)如果用戶C只是一個店鋪的子管理員赏寇,那他的權限只能查看該店鋪的商品吉嫩,3)如果用戶只是一個店鋪中的一個普通員工C,該店鋪有衣服商品嗅定,辦公用品等各種各樣的商品自娩,而該普通員工C只管衣服商品,這時處于衣服這個商品可以查看露戒,其他商品均不能查看椒功。
以上就是數(shù)據(jù)權限的概念捶箱,僅通過功能權限是不夠的智什。
數(shù)據(jù)權限如何設計
我在做后臺系統(tǒng)過程中,遇到過技術要求產品要涉及數(shù)據(jù)權限丁屎,也有技術不要求設計數(shù)據(jù)權限荠锭,那么產品要不要設計數(shù)據(jù)權限,以及如何設計數(shù)據(jù)權限?
根據(jù)四個方面的因數(shù)考慮:
1? 根據(jù)系統(tǒng)的大小晨川,該系統(tǒng)只有一個系統(tǒng)证九,還是該系統(tǒng)下有很多子系統(tǒng),或者系統(tǒng)下各個模塊數(shù)據(jù)的獨立性共虑,不能共享愧怜,例如商品平臺多個店鋪,功能間就不能共用妈拌;
2 系統(tǒng)對權限劃分的顆粒度拥坛,根據(jù)權限細節(jié)角度,權限層級也多尘分,則越需要有數(shù)據(jù)權限猜惋;
3 根據(jù)使用場景,需要后期人為去設置數(shù)據(jù)權限培愁,還是在程序中可以默認設置權限著摔。
4、根據(jù)創(chuàng)建賬號所在的層級定续,例如創(chuàng)建賬號是最上層管理平臺上谍咆,此時需要設置數(shù)據(jù)權限禾锤,如果創(chuàng)建賬號是屬于分支平臺上創(chuàng)建,則不需要數(shù)據(jù)權限
5摹察、....
只要理解了數(shù)據(jù)權限和功能權限區(qū)別时肿,至于要不要設計數(shù)據(jù)權限,在實踐的過程中港粱,就心里有數(shù)了螃成。權限管理其實沒有那么難,只要理解了就好查坪,他是系統(tǒng)不可缺少的部分寸宏。當然也存在系統(tǒng)較小,所有人在同一個平臺的操作權限都一樣偿曙,這種比較少氮凝。
有一本書,《通用權限管理系統(tǒng)》望忆,寫的有點多罩阵,而且會比較過時,不過還是蠻有用的启摄,對權限這塊的了解和熟悉稿壁。
全文沒設計圖,也沒有流程歉备,懶的畫懶的找了傅是。如果邏輯上有錯,歡迎提出來...
各位看官蕾羊,看完喜歡點個贊唄~
2019年7月27更新
補充菜單管理喧笔,字典管理和系統(tǒng)日志
權限管理一直都是B端產品很重要的部分,小編在工作中龟再,設計過程中需要有菜單管理书闸,字典管理,系統(tǒng)日志利凑,這些其實是架構師給我的指導和梳理浆劲,再次感謝程序員大大
那菜單管理,字典管理截碴,系統(tǒng)日志又是什么梳侨,他和權限又有什么依賴關系?
菜單管理
菜單管理日丹,他是系統(tǒng)最高級管理員需要用到的功能
這里需要做個說明走哺,最高級管理員開發(fā)者管理員的區(qū)別,如果系統(tǒng)是做平臺層哲虾,或者比較大的系統(tǒng)择示,菜單是需要做到動態(tài)的,而我們常見的最高級管理員晒旅,是使用者的最高級管理員栅盲,并不是開發(fā)者的管理員谈秫,開發(fā)者的管理員所具有的功能才是最全的,那么有人問迄本,使用者的最高級管理員和開發(fā)者最高級管理員合并為一個硕淑,不就可以了,其實不然嘉赎,由于使用者他不一定會懂得編程置媳,對于一些開發(fā)的一些概念不懂,也看不懂對應的菜單公条,比如環(huán)境探針拇囊,開發(fā)者監(jiān)控日志等,這些如果給到最高級使用者管理員赃份,他們看不懂寂拆,也會覺得做的系統(tǒng)奇葩奢米。不需要展示的開放出來干什么抓韩。實際上是開發(fā)者用的
回到菜單管理,由于系統(tǒng)龐大鬓长,或者系統(tǒng)是平臺層的谒拴,而當平臺層需要創(chuàng)建一個新的產品,新的產品菜單的創(chuàng)建涉波,這時候就要菜單管理去增刪改查英上。而這個權限一般是不會下設給其他人,不管系統(tǒng)管理上就亂了
字典管理
所謂字典管理啤覆,字段名稱創(chuàng)建的根源苍日,一般來說字典管理中的管理表,包含的屬性有:名稱窗声,名稱編碼相恃。具體的數(shù)據(jù),舉個例子:比如性別:區(qū)分男/女.而男對應的名稱編碼比如是0笨觅,女對應的名稱編碼是1.這就是字典管理中的兩條數(shù)據(jù)拦耐。不外乎關聯(lián)其他功能耕腾,他是有系統(tǒng)層直接管轄,不受其他數(shù)據(jù)的牽連杀糯,而業(yè)務層需要用到扫俺,可以調用字典管理中的數(shù)據(jù),比如個人中心中需要用到性別字段固翰,可以調用字典管理中的數(shù)據(jù)狼纬。
字典管理,頁面上的呈現(xiàn)一般是直接設計一個表骂际,新增的數(shù)據(jù)畸颅,可以是,性別方援,身高没炒,體重,可選項中的選項值犯戏。
這是和架構師學的送火,其實字典管理,和我們日常使用中的字典有著同樣的作用先匪,比如我們去查康熙字典种吸,具體到某個字,這個字可以在不同的地方呀非,不同的語境下產生作用坚俗,但是他字的根源在康熙字典中。(杠精會說 字的根源不在字典中岸裙,這是比喻猖败,比喻我們設計系統(tǒng)字典管理是什么,他產生的作用是什么降允,起到什么作用恩闻。)
系統(tǒng)日志
我們常見的有登錄日志,操作日志剧董,監(jiān)控日志幢尚,等等,他和系統(tǒng)日志又有什么管理翅楼,其實是"父子”關系尉剩,即系統(tǒng)日志包含所有的日志,系統(tǒng)日志底下有登錄日志毅臊,操作日志理茎,監(jiān)控日志,他們各自起到不同的作用,比如我們常見的禪道功蜓,有登錄日志和操作日志园爷,即登錄記錄和操作記錄,作為管理者可以查看式撼,統(tǒng)計童社,跟蹤問題,跟蹤責任著隆,記錄事實等扰楼。而監(jiān)控日志,一般是給開發(fā)人員用的美浦,系統(tǒng)大數(shù)據(jù)的并發(fā)弦赖,產生的卡頓,bug浦辨,系統(tǒng)崩潰等蹬竖,為了方便定位問題,優(yōu)化系統(tǒng)流酬。