導(dǎo)航 引子 場景梳理 基于角色的訪問控制(RBAC) 多租戶系統(tǒng)的權(quán)限設(shè)計 RuoYi系統(tǒng)的數(shù)據(jù)權(quán)限設(shè)計 最終設(shè)計方案 參考 本文首發(fā)《智客工坊-Saas多租戶數(shù)據(jù)權(quán)限設(shè)計(參考RuoYi)》,共計3656字,閱讀時長5min。 引子 最近公司打算把內(nèi)部的系統(tǒng)打造成商業(yè)化的Saas產(chǎn)品,我們組承擔(dān)了
最近公司計劃將內(nèi)部系統(tǒng)打造成商業(yè)化的Saas產(chǎn)品,我們組負(fù)責(zé)產(chǎn)品的研發(fā)任務(wù)。理論上,這套系統(tǒng)在公司內(nèi)部業(yè)務(wù)中已經(jīng)打磨了5年+,對于我們這個細(xì)分行業(yè)來說已經(jīng)非常成熟,只需要稍加改造,適配多租戶模式即可。但是,在項目架構(gòu)設(shè)計中,發(fā)現(xiàn)有很多需要重新梳理和考慮的地方。今天,主要是針對數(shù)據(jù)權(quán)限這塊的設(shè)計和大家分享一下。
在IM聊天場景中,有個很重要功能是,每個用戶都要查看自己的會話(聊天記錄)。比如,普通咨詢師可能就只能查看自己的聊天,主管可以查看組員咨詢師的聊天,CEO可以查看所有咨詢師的聊天。這樣的需求在我們的系統(tǒng)中應(yīng)該如何實現(xiàn)呢?
基于角色的訪問控制(Role-based access control,簡稱 RBAC),指的是通過用戶的角色(Role)授權(quán)其相關(guān)權(quán)限,這實現(xiàn)了更靈活的訪問控制,相比直接授予用戶權(quán)限,要更加簡單、高效、可擴展。
當(dāng)使用 RBAC 時,通過分析系統(tǒng)用戶的實際情況,基于共同的職責(zé)和需求,授予他們不同角色。你可以授予給用戶一個或多個角色,每個角色具有一個或多個權(quán)限,這種 用戶-角色、角色-權(quán)限 間的關(guān)系,讓我們可以不用再單獨管理單個用戶,用戶從授予的角色里面繼承所需的權(quán)限。
一般來說,我們會將用戶的權(quán)限分為菜單權(quán)限和數(shù)據(jù)權(quán)限。菜單權(quán)限:控制用戶能看到那些菜單或者按鈕。數(shù)據(jù)權(quán)限:控制用戶能看到的數(shù)據(jù)范圍。在開始設(shè)計之前,我們可以看看用戶登錄+授權(quán)的過程,在用戶返回的信息中就會包含角色(roleCodes)、菜單(permCodes)和數(shù)據(jù)權(quán)限(dataCodes)信息。所以,角色(roleCodes)、菜單(permCodes)和數(shù)據(jù)權(quán)限(dataCodes)就是需要我們提前設(shè)計好的。
根據(jù)IM自身的業(yè)務(wù),我們對角色的設(shè)計如下:咨詢師(counselor_role)、主管(manager_role)、管理員(admin_role)。菜單權(quán)限:賬號管理(zhanghaoguanli)、公共設(shè)置(gonggongshezhi)、...(根據(jù)實際情況定義)。令人頭疼的其實是數(shù)據(jù)權(quán)限的設(shè)計,我們期望定義一種通用的數(shù)據(jù)權(quán)限。所以,這里就不得不提到RuoYi系統(tǒng)。
在無意間,看到了一篇介紹RuoYi系統(tǒng)數(shù)據(jù)權(quán)限設(shè)計分析的文章-《深入分析若依數(shù)據(jù)權(quán)限@datascope (注解+AOP+動態(tài)sql拼接) 【循序漸進(jìn),附分析過程】》。于是,筆者對這個開源系統(tǒng)進(jìn)行了體驗。(點此處直達(dá))[https://demo.ruoyi.vip/index]。登錄RuoYi系統(tǒng)后臺,映入眼簾的是一堆的大家再熟悉不過的系統(tǒng)菜單。
這里重點查看角色管理菜單,在列表的操作一欄,可以看到有個更多按鈕,展開更多按鈕,數(shù)據(jù)權(quán)限按鈕暴露出來。
點擊數(shù)據(jù)權(quán)限按鈕,就可以看到數(shù)據(jù)權(quán)限配置窗口。在這里可以看到數(shù)據(jù)權(quán)限分類如下:全部數(shù)據(jù)權(quán)限、自定義數(shù)據(jù)權(quán)限、本部門數(shù)據(jù)權(quán)限、本部門及以下數(shù)據(jù)權(quán)限、僅本人數(shù)據(jù)權(quán)限。可以看到這里的數(shù)據(jù)權(quán)限都是基于組織架構(gòu)設(shè)計的。需要指出的是,這里的自定義數(shù)據(jù)權(quán)限其實也是基于組織架構(gòu)的選擇,只是可以自由選擇(比如適配跨部門場景)?傮w來講,RuoYi系統(tǒng)數(shù)據(jù)權(quán)限的設(shè)計是中規(guī)中矩的,應(yīng)該屬于比較通用的設(shè)計。這也是我們目前的商業(yè)化項目設(shè)計中值得借鑒的。
或許還有更好的設(shè)計方案,歡迎大家提出更好的建議。
機器學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)構(gòu)建(下)
閱讀華為Mate品牌盛典:HarmonyOS NEXT加持下游戲性能得到充分釋放
閱讀實現(xiàn)對象集合與DataTable的相互轉(zhuǎn)換
閱讀算法與數(shù)據(jù)結(jié)構(gòu) 1 - 模擬
閱讀5. Spring Cloud OpenFeign 聲明式 WebService 客戶端的超詳細(xì)使用
閱讀Java代理模式:靜態(tài)代理和動態(tài)代理的對比分析
閱讀Win11筆記本“自動管理應(yīng)用的顏色”顯示規(guī)則
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]
湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)