別人家的SaaS為啥就是好用——權(quán)限體系設(shè)計(jì)實(shí)戰(zhàn)分析

7 評論 19333 瀏覽 152 收藏 10 分鐘

本文主要介紹B端產(chǎn)品中權(quán)限體系的設(shè)計(jì)模式,并賦予實(shí)際案例展示。

一、權(quán)限體系簡介

權(quán)限管理是一個(gè)幾乎所有大中型B端系統(tǒng)的都會涉及的一個(gè)重要組成部分,主要目的是對整個(gè)后臺管理系統(tǒng)進(jìn)行權(quán)限的控制,而針對的對象是員工,避免因權(quán)限控制缺失或操作不當(dāng)引發(fā)的風(fēng)險(xiǎn)問題,如操作錯(cuò)誤,數(shù)據(jù)泄露等問題。

抽象來看權(quán)限體系可以分為如下兩類:功能權(quán)限與數(shù)據(jù)權(quán)限兩部分:

  • 功能權(quán)限:指的是在系統(tǒng)中的一系列操作。常見的如:刪除,編輯,提交等
  • 數(shù)據(jù)權(quán)限:指數(shù)據(jù)中存在的數(shù)據(jù)是否能查看,如:釘釘中個(gè)人的出勤數(shù)據(jù)每人能看到,但是全公司的考勤數(shù)據(jù)卻只有管理員能看到。

在這里權(quán)限的實(shí)現(xiàn)一共有兩種模式:

“所見即所得”模式

用最通俗的話來說也就是,能看見相關(guān)操作就能執(zhí)行對應(yīng)的操作,所有的權(quán)限限制就在隱藏對應(yīng)的操作頁或按鈕上,不進(jìn)行區(qū)分查看與操作。

例如一個(gè)項(xiàng)目管理軟件,當(dāng)用戶擁有了訪問項(xiàng)目操作頁的權(quán)限,在本模式里該項(xiàng)目的增刪改查都對應(yīng)擁有了,這里的核心就是只要能看到就能操作。

這個(gè)模式的好處是適合中小型B端客戶,其本身沒有復(fù)雜的崗位劃分且要求系統(tǒng)簡單易上手,畢竟一款B端的產(chǎn)品要是權(quán)限讓用戶配置半個(gè)小時(shí),這對用戶來說是個(gè)無比巨大的負(fù)擔(dān)。

根據(jù)我的經(jīng)驗(yàn)來看“所見即所得”這種模式基本滿足80%的SaaS系統(tǒng)對權(quán)限管理的需求。

“讀寫分離”模式

所謂的讀寫分離,就是在第一種模式上進(jìn)行了升級(這里的寫泛指一切關(guān)于某模塊的操作)。

怎么理解呢?當(dāng)我們擁有了進(jìn)入該頁面的權(quán)限時(shí),如果沒有分配寫的權(quán)限,就算看到了這些操作也不能使用。這種模式多用在數(shù)據(jù)權(quán)限上,而功能權(quán)限上是多用于預(yù)告給用戶,只有當(dāng)用戶完成指定條件時(shí)才可以去操作。如未完成指定信息填寫時(shí),不能點(diǎn)擊提交,但是提交按鈕必須要在頁面出現(xiàn)。

如果讓我們用一張圖來闡明這兩種權(quán)限的設(shè)計(jì)體系的話,應(yīng)該是這個(gè)樣子的:

圖:權(quán)限顆粒度

二、功能權(quán)限設(shè)計(jì)

具體來說我們可以劃分為如下三步:

圖:設(shè)計(jì)步驟

讓我們一步步來看:

步驟1:功能點(diǎn)封裝

這里就是將我們系統(tǒng)中的功能進(jìn)行梳理,得出一顆完整的功能樹。你的權(quán)限系統(tǒng)想要控制到哪一層級,就將功能拆分到對應(yīng)的層級即可。

例如:

圖:功能拆分示例

步驟2:權(quán)限授予

在拆分完功能點(diǎn)后,我們就相當(dāng)于有了一個(gè)完整的系統(tǒng)權(quán)限表(也稱之為權(quán)限池),可以清楚的告訴用戶什么環(huán)節(jié)可以進(jìn)行配置,接下來我們需要設(shè)計(jì)的就是如何讓用戶去分配權(quán)限,即:權(quán)限授予。

在權(quán)限授予上我們要滿足如下兩個(gè)基本方向的設(shè)計(jì):

  • 角色概念:角色的理解,我們可以簡單的理解為是一個(gè)個(gè)權(quán)限的集合。它通過提前將一部分權(quán)限進(jìn)行配置成通用模板,隨后只需將需要的人員授予這個(gè)角色就能擁有對應(yīng)的權(quán)限。
  • 權(quán)限池內(nèi)自定義授予:在SaaS軟件里經(jīng)常我們會遇到這樣的情況,之前我們配置的某某部門經(jīng)理或助理的角色由于臨時(shí)性工作借調(diào)可能會涉及多個(gè)崗位的工作,從而導(dǎo)致之前的角色權(quán)限不能滿足,而此時(shí)這種個(gè)例現(xiàn)象又不好再單獨(dú)創(chuàng)建角色給他,因此需要能在角色外再單獨(dú)指派權(quán)限的功能。這里我們就稱之為權(quán)限池內(nèi)自定義授予。當(dāng)然這里也適用于不在角色表中的任意權(quán)限分配。

值得提一句的是:一般的權(quán)限系統(tǒng)中要支持一人授予多個(gè)角色的功能。

步驟3:權(quán)限累加器

想必在步驟2大家肯定有疑問了,一人可以承接多個(gè)角色,又可以自定義額外權(quán)限,這樣到最后個(gè)人權(quán)限要怎么定呢?

這里的權(quán)限累加器其實(shí)就是在解決這個(gè)問題,這里相當(dāng)于是一個(gè)單獨(dú)權(quán)限計(jì)算器,通過將前后授予的權(quán)限進(jìn)行累加得到用戶的最終權(quán)限。

這里的計(jì)算規(guī)則如下:

  • 計(jì)算1:將變動前的權(quán)限集合在被授予新權(quán)限集合后兩者取并集,去重相同的權(quán)限;
  • 計(jì)算2:最終權(quán)限 = 角色權(quán)限 + 權(quán)限池內(nèi)自定義授予權(quán)限

在一般權(quán)限授予中,我們給予權(quán)限一般都是越給越多。但是也有可能會是將某一角色的權(quán)限進(jìn)行統(tǒng)一減少,此時(shí)我們就需要交由累加器幫我們?nèi)ヅ繉⒍鄠€(gè)擁有該角色的權(quán)限進(jìn)行計(jì)算。

舉個(gè)例來看:

在上面的例子中,我們的權(quán)限體系在上面進(jìn)行了三次變動:

第一次:U298,278兩位用戶獲得了初始員工權(quán)限并給予了發(fā)布新聞權(quán)限,此時(shí)由權(quán)限累加器幫我們計(jì)算出共擁有了7個(gè)權(quán)限;

第二次:新增了兩位用戶,并將四位用戶在員工角色上又增加了部門助理角色,并額外增加了數(shù)據(jù)查看權(quán)限,此時(shí)權(quán)限累加器計(jì)算出這四位用戶權(quán)限數(shù)為:

員工角色與部門助理的權(quán)限相同權(quán)限6項(xiàng) + 部門助理獨(dú)有的4項(xiàng)權(quán)限 + 發(fā)布新聞權(quán)限 + 數(shù)據(jù)權(quán)限 = 12項(xiàng);

第三次:四位用戶的共有角色部門助理被減去了一個(gè)權(quán)限,此時(shí)權(quán)限累加器計(jì)算出這四位用戶權(quán)限數(shù)為11;

三. 兩種實(shí)現(xiàn)示例

“所見即所得”模式

讓我們直接進(jìn)入權(quán)限模塊來看。

首先進(jìn)入系統(tǒng)管理面板:

在進(jìn)入內(nèi)部人員管理界面進(jìn)行權(quán)限配置:

這里由于原來系統(tǒng)的業(yè)務(wù)顆粒度本身不高,因此我只將功能劃分到頁面級,也降低了企業(yè)管理員的學(xué)習(xí)配置成本。在這部分里,用戶只需給每位人員配置擁有什么頁面的訪問權(quán)限,就有了對應(yīng)的功能權(quán)限。

舉例來說如果在上頁我勾選擁有了審批配置權(quán)限,也就是可以進(jìn)入審批模板列表頁,因此這里所有的功能都可以使用。

“讀寫分離”模式

這種模式其核心在上文已經(jīng)介紹過了,就是將每個(gè)頁面內(nèi)還要進(jìn)行只能查看與能編輯兩種狀態(tài)。

具體來看看配置頁的實(shí)現(xiàn):

大家可以看到在這里配置的顆粒度更細(xì),在每個(gè)頁面中都進(jìn)行了進(jìn)一步劃分,分為查看名稱,進(jìn)入詳情,刪除三大權(quán)限。

而功能頁是這個(gè)樣子的:

綜上

對于權(quán)限模塊來說,在上面介紹的兩個(gè)思路中沒有所謂絕對正確的解決方案。我們應(yīng)該做的是去選擇最適合自己業(yè)務(wù)體量的設(shè)計(jì)模式,避免出現(xiàn)“小馬拉大車”的現(xiàn)象。

PS. 如果喜歡,自愿訂閱,投食,良心不痛!

 

本文由 @?三爺 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 角色應(yīng)該和權(quán)限拆分開
    在企業(yè)內(nèi)部存在角色的概念,如果把角色和權(quán)限綁定,會產(chǎn)生問題:比如,企業(yè)里面有兩個(gè)人事a,b,有三個(gè)人事權(quán)限A,B,C,經(jīng)常會遇到a有A權(quán)限,b有B,C權(quán)限,如果把A,B,C和人事這個(gè)角色綁定在一起,就會造成賦權(quán)問題,可以嘗試以下辦法:
    權(quán)限池必須有,在權(quán)限池中預(yù)設(shè)權(quán)限組
    角色和人員綁定,利用角色進(jìn)行賦權(quán)
    功能權(quán)限通過以上方式來。
    再說操作權(quán)限,不外乎增,刪,改,查(以及這幾個(gè)封裝在一起的完全控制),這些采用讀寫分離的方式,結(jié)合上面的權(quán)限池

    回復(fù)
    1. 權(quán)限組是什么概念?

      來自北京 回復(fù)
    2. 權(quán)限組是對權(quán)限進(jìn)行一個(gè)分類,主要是將模塊操作的權(quán)限進(jìn)行打包在一起

      來自浙江 回復(fù)
    3. 有點(diǎn)意思,經(jīng)常會遇到a有A權(quán)限,b有B,C權(quán)限如果是一個(gè)問題需要這三個(gè)權(quán)限才能解決,那豈不是更麻煩了

      來自內(nèi)蒙古 回復(fù)
    4. 權(quán)限和用戶是分離的啊,如果你需要一個(gè)人有A,B,C三個(gè)權(quán)限,你用角色把人員和權(quán)限關(guān)聯(lián)起來就可以

      來自浙江 回復(fù)
  2. 不錯(cuò)

    回復(fù)
    1. 哈哈

      回復(fù)