了解這幾點(diǎn),權(quán)限管理其實(shí)很簡(jiǎn)單
本文作者從工作實(shí)踐出發(fā),結(jié)合案例等分享了關(guān)于權(quán)限設(shè)計(jì)相關(guān)的知識(shí),供大家一同參考和學(xué)習(xí)。
最近一段時(shí)間,我們的系統(tǒng)在做一個(gè)新功能,其中涉及到一些與權(quán)限相關(guān)的功能,之前也接觸過(guò)權(quán)限相關(guān)的設(shè)計(jì),這篇文章就來(lái)對(duì)關(guān)于權(quán)限設(shè)計(jì)的進(jìn)行一次總結(jié)。對(duì)于各種產(chǎn)品,不管是C端產(chǎn)品或者是B端產(chǎn)品,每個(gè)產(chǎn)品當(dāng)中都有著權(quán)限控制,權(quán)限管理是系統(tǒng)中的基礎(chǔ)模塊,在搭建系統(tǒng)的時(shí)候,系統(tǒng)架構(gòu)式就需要將權(quán)限搭建完成。好的權(quán)限管理,對(duì)于后續(xù)的系統(tǒng)擴(kuò)展可以提供極大的兼容性。
一、常見(jiàn)的權(quán)限分類
1. 登錄權(quán)限
在我們?nèi)粘J褂肁PP的時(shí)候,有時(shí)候也會(huì)遇到一些權(quán)限控制,比如在阿里零售通APP(下圖1)的首頁(yè),在未登錄的情況下,用戶只能看到部分商品的價(jià)格,只有當(dāng)我們登錄之后才能看到商品的價(jià)格。這種權(quán)限控制也比較簡(jiǎn)單,需要前端開(kāi)發(fā)根據(jù)用戶當(dāng)前的登錄狀態(tài)做判斷即可,但是這個(gè)是針對(duì)每個(gè)商品的價(jià)格,單獨(dú)配置了是否對(duì)未登錄用戶開(kāi)放的權(quán)限。
2. 認(rèn)證權(quán)限
而有的產(chǎn)品的權(quán)限校驗(yàn)會(huì)更嚴(yán)格一點(diǎn),例如京東掌柜寶APP(下圖)的首頁(yè),即使登錄以后也是看不到商品價(jià)格的,必須在認(rèn)證成為店鋪的掌柜才能看到商品價(jià)格。而且這個(gè)產(chǎn)品里面,是所有的價(jià)格都看不到,這種是做了一種全局的配置,無(wú)論是哪件商品,只要用戶未認(rèn)證,都是看不到商品價(jià)格的。
3. 會(huì)員權(quán)限
另外還有一些權(quán)限,是我必須成為會(huì)員才能進(jìn)行操作的。例如下圖中的QQ音樂(lè)會(huì)員,當(dāng)我們是非會(huì)員的時(shí)候,只能試聽(tīng)其中的片段,頁(yè)面也會(huì)直接提示我們需要開(kāi)通權(quán)限才能播放完整的歌曲。同樣還有一些其他的工具類APP也會(huì)使用相同的套路,可以先讓用戶免費(fèi)試用一段時(shí)間,如果想要繼續(xù)使用的話,就需要付費(fèi)。有的是基礎(chǔ)功能免費(fèi),使用全部功能的話,需要付費(fèi)。這些都是一樣的邏輯,前端都需要校驗(yàn)當(dāng)前登錄的用戶是否有會(huì)員權(quán)限。
4. 菜單權(quán)限
我們上面說(shuō)的這些都是一些我們?cè)谧约菏謾C(jī)APP,即用戶端的一些權(quán)限校驗(yàn)邏輯,而在我們的管理后管也會(huì)經(jīng)常有其他一些權(quán)限,其中最常見(jiàn)的就是菜單權(quán)限。顧名思義,在后臺(tái)管理的頁(yè)面,我們經(jīng)常會(huì)有一些菜單,每個(gè)菜單上面都有對(duì)應(yīng)的權(quán)限,只有滿足權(quán)限的人才能進(jìn)行訪問(wèn)。例如下圖當(dāng)中,左邊菜單會(huì)有不同的菜單,但是不同的人員會(huì)賦予不同的權(quán)限,所以對(duì)于不同的人來(lái)說(shuō),能夠看到的菜單也不一樣。
另外在一些移動(dòng)端的APP上面 ,也會(huì)有不同的身份,例如boss直聘上面,可以切換身份,作為求職者和招聘者,不同的身份看到的頁(yè)面也是不一樣的。
5. 操作權(quán)限
操作權(quán)限是指用戶進(jìn)行某個(gè)操作的權(quán)限。比如在我們的商品管理里面,商品上架、下架功能的操作需要有專門的人去操作,而查看商品詳情的權(quán)限則可以放開(kāi)給更多的人,所以查看商品詳情和操作商品上下架的權(quán)限就會(huì)區(qū)分開(kāi)。
6. 數(shù)據(jù)權(quán)限
數(shù)據(jù)權(quán)限,會(huì)控制用戶訪問(wèn)頁(yè)面的時(shí)候,能有查看到的數(shù)據(jù)。這種一般會(huì)在公司團(tuán)隊(duì)較大的時(shí)候會(huì)需要有這樣的需求區(qū)分,如果公司團(tuán)隊(duì)人數(shù)很少,一般不會(huì)有這種需求。當(dāng)公司人員多的時(shí)候,一般會(huì)有很多業(yè)務(wù)部門,每個(gè)業(yè)務(wù)部門會(huì)負(fù)責(zé)不同的業(yè)務(wù),根據(jù)管理需要,這些業(yè)務(wù)部門之間的數(shù)據(jù)有時(shí)候會(huì)進(jìn)行需求。
例如我們最近在做的庫(kù)存分倉(cāng)庫(kù)管理,在庫(kù)存管理的頁(yè)面,每個(gè)倉(cāng)庫(kù)的庫(kù)管員只能看到自己管理的倉(cāng)庫(kù)的庫(kù)存數(shù)據(jù),而無(wú)法看到其他倉(cāng)庫(kù)的庫(kù)存數(shù)據(jù)。這是對(duì)于業(yè)務(wù)部門,但是一個(gè)公司里面還會(huì)有一些管理部門,這些部門的人員是能夠看到所有業(yè)務(wù)部門的數(shù)據(jù)的,所以又會(huì)需要有一個(gè)權(quán)限需要能夠看到所有部門的業(yè)務(wù)數(shù)據(jù)。除了這種的數(shù)據(jù)權(quán)限以外,還有字段的數(shù)據(jù)權(quán)限。
比如在訂單列表,有些人沒(méi)有權(quán)限查看訂單的收件人信息的字段,包括收件人姓名、電話、地址信息,有些人沒(méi)有權(quán)限查看訂單的商品價(jià)格信息。這種數(shù)據(jù)權(quán)限的劃分,需要根據(jù)公司的管理要求具體來(lái)看待,當(dāng)如果公司需要管理到這么細(xì)的顆粒度的時(shí)候,再去做,一般的中小企業(yè),正常情況下很少會(huì)有這種需求。
二、如何實(shí)現(xiàn)權(quán)限管理
上面大概介紹了在APP和管理后臺(tái)常見(jiàn)的一些權(quán)限,這些權(quán)限基本上能夠滿足我們對(duì)于用戶權(quán)限的控制。但是如何實(shí)現(xiàn)這種權(quán)限設(shè)計(jì),這篇文章主要介紹上面第4、5、6種后臺(tái)權(quán)限是如何設(shè)計(jì)的。在我們一般的后臺(tái)權(quán)限設(shè)計(jì)當(dāng)中,一般會(huì)用到這幾個(gè)概念:用戶、賬號(hào)、角色、權(quán)限
在我們的系統(tǒng)當(dāng)中,用戶都會(huì)分配一個(gè)賬號(hào),這個(gè)賬號(hào)不會(huì)與權(quán)限直接相關(guān)聯(lián),而是中間有一個(gè)角色在牽線搭橋。賬號(hào)、角色和權(quán)限都是系統(tǒng)中最底層的概念,也是其他業(yè)務(wù)邏輯和功能邏輯的基礎(chǔ),在系統(tǒng)的權(quán)限管理里面這三者必不可少,下面我們來(lái)說(shuō)說(shuō)這三者是如何實(shí)現(xiàn)權(quán)限管理的邏輯的:
1. 權(quán)限
根據(jù)業(yè)務(wù)需要,我們會(huì)向開(kāi)發(fā)人員提出我們的需求,哪些地方需要做權(quán)限控制,技術(shù)人員會(huì)根據(jù)我們的需求創(chuàng)建一系列的權(quán)限標(biāo)識(shí),并對(duì)某些頁(yè)面、按鈕、數(shù)據(jù)等等加上對(duì)應(yīng)的權(quán)限校驗(yàn),這樣管理人員就有權(quán)限可用了。
2. 角色
系統(tǒng)的管理人員,一般是超級(jí)管理員,他們會(huì)根據(jù)實(shí)際的需要,在系統(tǒng)中創(chuàng)建一個(gè)角色,這個(gè)角色只是一個(gè)概念,然后在這個(gè)角色上面加上上面開(kāi)發(fā)人員創(chuàng)建的權(quán)限標(biāo)識(shí)。這樣,這個(gè)角色就擁有了這個(gè)權(quán)限。而往往權(quán)限和角色之間是多對(duì)多的關(guān)系:
3. 賬號(hào)
最后,我們?cè)賹?chuàng)建好的角色,賦予對(duì)應(yīng)的賬號(hào),這樣這個(gè)賬號(hào)就擁有了這個(gè)角色所擁有的權(quán)限了,如下圖所示。最終用戶在登錄他的賬號(hào)的時(shí)候,就擁有了這個(gè)賬號(hào)下面的權(quán)限了
這樣做的方式是可以靈活配置賬號(hào)的權(quán)限,當(dāng)當(dāng)我們新增一個(gè)權(quán)限,只要我們將這個(gè)權(quán)限賦予需要這個(gè)權(quán)限的角色,那么賦予了這個(gè)角色的所有賬號(hào)都可以擁有這個(gè)權(quán)限了,無(wú)需針對(duì)每個(gè)賬號(hào)單獨(dú)開(kāi)通權(quán)限。
擴(kuò)展當(dāng)一個(gè)組織逐漸擴(kuò)大以后,權(quán)限、角色、用戶不斷增多,很多時(shí)候,利用上面這個(gè)邏輯依然能夠滿足我們的需求,但是對(duì)于我們的配置仍然有點(diǎn)麻煩,所以又可以引入組織架構(gòu)和權(quán)限組的概念。
當(dāng)組織當(dāng)中不斷加入新員工的時(shí)候,我們將他的新的賬號(hào)放到組織架構(gòu)之下,又將角色按照一定的規(guī)則組合后,再關(guān)聯(lián)到組織架構(gòu),當(dāng)用戶的賬號(hào)在這個(gè)組織機(jī)構(gòu)之下,有擁有了這個(gè)角色組的里面的所有權(quán)限,這樣,對(duì)于新員工,只需要將他放入對(duì)應(yīng)的組織架構(gòu)即可,而不需要再給他一一配置角色。
以上就是關(guān)于權(quán)限管理的總結(jié),感謝您的閱讀~
作者:三點(diǎn)半先生;微信公眾號(hào):曉言產(chǎn)品(ID:Xiao_PM)一名產(chǎn)品小學(xué)生,在這里記錄每天工作的工作和學(xué)習(xí)中關(guān)于產(chǎn)品的一些想法。
本文由 @三點(diǎn)半先生 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議。
功能的控制只是權(quán)限中的 菜單控制,還需要附帶用戶的角色身份下的數(shù)據(jù)控制,這才是權(quán)限控制核心,我希望能看到一篇這個(gè)