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