RM新时代官方网站

低代碼平臺(tái)如何做數(shù)據(jù)范圍權(quán)限控制——關(guān)系數(shù)據(jù)庫(低代碼 數(shù)據(jù)庫設(shè)計(jì))

幾乎每一個(gè)軟件系統(tǒng)都涉及到權(quán)限設(shè)計(jì),權(quán)限控制又分為功能權(quán)限控制和數(shù)據(jù)范圍權(quán)限控制。toC的軟件權(quán)限控制一般都是根據(jù)用戶畫像(特征數(shù)據(jù))來控制的,即使有部分可以配置也相對(duì)比較簡(jiǎn)單。toB的系統(tǒng)一般都需要靈活的配置,功能權(quán)限配置也有RBAC(Role-Based Access Control)這樣的標(biāo)準(zhǔn),數(shù)據(jù)范圍權(quán)限控制就沒有這樣的標(biāo)準(zhǔn)的解決方案了。

常見的數(shù)據(jù)范圍權(quán)限控制方案

常見的一種數(shù)據(jù)范圍權(quán)限控制方案是將業(yè)務(wù)按照歸屬人員和歸屬部門來劃分,在配置時(shí)可有以下選項(xiàng):

  • 我的業(yè)務(wù);
  • 部門的業(yè)務(wù);
  • 下級(jí)部門的業(yè)務(wù)。

這樣的設(shè)計(jì)一般也能夠滿足大部分業(yè)務(wù)的需求,但是它有以下幾個(gè)明顯的缺點(diǎn):

  • 不是非常靈活,只能根據(jù)業(yè)務(wù)的歸屬來進(jìn)行范圍劃分;
  • 數(shù)據(jù)必須內(nèi)置歸屬人員和歸屬部門字段,有的系統(tǒng)還約定了字段名稱。

基于條件表達(dá)式的數(shù)據(jù)范圍設(shè)置

條件表達(dá)式類似與sql語句條件表達(dá)式,在數(shù)據(jù)查詢時(shí)植入到查詢語句中,在修改時(shí)對(duì)數(shù)據(jù)對(duì)象進(jìn)行驗(yàn)證。

低代碼平臺(tái)如何做數(shù)據(jù)范圍權(quán)限控制——關(guān)系數(shù)據(jù)庫(低代碼 數(shù)據(jù)庫設(shè)計(jì))

數(shù)據(jù)范圍權(quán)限條件表達(dá)式設(shè)置

條件表達(dá)式的形式是一個(gè)邏輯表達(dá)式,其中方括號(hào)中的是 [表名.字段名],花括號(hào)中的是 { 環(huán)境變量或?qū)傩? ':' 在SQL語句中的變量名},這個(gè)SQL語句中的變量名是可選的,它的作用是個(gè)前面環(huán)境變量和屬性重命名,避免命名SQL語句不合法。

低代碼平臺(tái)如何做數(shù)據(jù)范圍權(quán)限控制——關(guān)系數(shù)據(jù)庫(低代碼 數(shù)據(jù)庫設(shè)計(jì))

配置不同角色的 數(shù)據(jù)權(quán)限范圍

接口的權(quán)限遵循RBAC規(guī)范,將接口和角色關(guān)聯(lián),系統(tǒng)在關(guān)聯(lián)角色時(shí)同時(shí)配置數(shù)據(jù)范圍表達(dá)式,實(shí)現(xiàn)范圍的權(quán)限控制。

條件表達(dá)式數(shù)據(jù)范圍控制的實(shí)現(xiàn)方式

訪問關(guān)系數(shù)據(jù)庫有兩種方式,一種通過ORM接口訪問數(shù)據(jù)庫中的表,另一種是直接用SQL語句訪問數(shù)據(jù)庫。這兩種方式有不同的控制方式:

一、ORM接口訪問

需要對(duì)ORM接口進(jìn)行擴(kuò)展或者自己設(shè)計(jì)一套ORM方案,南大先騰做了MyBatisHibernate的對(duì)應(yīng)功能的拓展 https://github.com/ndxt/centit-persistence/tree/before-delete-hibernate-mybatis ,因?yàn)楹髞砉救垦邪l(fā)都轉(zhuǎn)移到自研的ORM,這個(gè)擴(kuò)展也不再更新了,各位有興趣可以獲取。

在ORM接口訪問數(shù)據(jù)庫時(shí)對(duì)上面的表達(dá)式進(jìn)行轉(zhuǎn)換,主要是轉(zhuǎn)換花括號(hào){}中的環(huán)境變量。

二、SQL語句訪問

SQL語句訪問時(shí)也要對(duì)語句進(jìn)行拓展,在SQL語句中添加錨點(diǎn),形式如下:

select * from bussiness_chance a where 1=1 { bussiness_chance a } order by a.create_time

其中 { bussiness_chance a } 為錨點(diǎn),形式為 { 表名 別名, 表名 別名,……..} 別名是可選的,一個(gè)錨點(diǎn)可以有多個(gè)表。SQL語句再執(zhí)行前需要進(jìn)行預(yù)處理,系統(tǒng)根據(jù)當(dāng)前用戶的角色查找他用于的角色在當(dāng)前接口中的所有數(shù)據(jù)范圍權(quán)限表達(dá)式,如果有多個(gè)表達(dá)式則用or連接成符合比表達(dá)式,并替換到SQL語句的錨點(diǎn)中。比如上面的示例替換的結(jié)果為:

select * from bussiness_chance a where 1=1 and a.follow_user = :currUserCode order by a.create_time

同時(shí)在參數(shù)變量表中添加一個(gè)currUserCode的變量,對(duì)應(yīng)的值為 當(dāng)前用戶環(huán)境變量中的currentUser.userCode值。

總結(jié)

通過條件表達(dá)式的方式來控制數(shù)據(jù)范圍權(quán)限理論上可以對(duì)任何字段進(jìn)行過濾控制,可以在系統(tǒng)上線后同個(gè)配置的方式進(jìn)行靈活配置。但是也有一些缺點(diǎn):一、只能用于關(guān)系數(shù)據(jù)庫并且需要拓展ORM模塊或者自研ORM模塊,二、SQL語句需要添加數(shù)據(jù)范圍權(quán)限的控制錨點(diǎn),雖然不麻煩也不復(fù)雜但是不能忘掉。

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。

(0)
上一篇 2024年1月11日 上午10:33
下一篇 2024年1月11日 上午10:49

相關(guān)推薦

  • 攀枝花協(xié)同辦公平臺(tái)下載

    攀枝花協(xié)同辦公平臺(tái)下載 隨著數(shù)字化時(shí)代的到來,協(xié)同辦公平臺(tái)已經(jīng)成為企業(yè)日常辦公的必備工具。攀枝花作為一個(gè)地處偏遠(yuǎn)的山城,隨著經(jīng)濟(jì)的發(fā)展,越來越多的企業(yè)開始重視團(tuán)隊(duì)協(xié)作和效率提升,因…

    科研百科 2025年1月9日
    6
  • 全國(guó)計(jì)算機(jī)、軟件、通信重點(diǎn)實(shí)驗(yàn)室

    全國(guó)計(jì)算機(jī)、軟件、通信重點(diǎn)實(shí)驗(yàn)室簡(jiǎn)介 全國(guó)計(jì)算機(jī)、軟件、通信重點(diǎn)實(shí)驗(yàn)室是教育部和國(guó)家計(jì)委聯(lián)合成立的全國(guó)重點(diǎn)科研單位之一,于1992年掛牌。該實(shí)驗(yàn)室的主要研究方向包括計(jì)算機(jī)系統(tǒng)、軟件…

    科研百科 2024年12月5日
    5
  • 軟件轉(zhuǎn)產(chǎn)品庫時(shí)間點(diǎn)

    軟件轉(zhuǎn)產(chǎn)品庫時(shí)間點(diǎn) 隨著科技的不斷發(fā)展,軟件已經(jīng)成為了企業(yè)運(yùn)營(yíng)中不可或缺的一部分。然而,隨著軟件的不斷增多,企業(yè)也需要不斷地進(jìn)行軟件升級(jí)和維護(hù),這對(duì)于企業(yè)而言是一項(xiàng)巨大的開銷。因此…

    科研百科 2024年10月26日
    0
  • 簡(jiǎn)歷參與老師科研項(xiàng)目

    簡(jiǎn)歷參與老師科研項(xiàng)目 尊敬的導(dǎo)師: 您好!我是一名來自XX大學(xué)的本科生,目前正在攻讀XX專業(yè)博士學(xué)位。在過去的幾年里,我有幸參與了您領(lǐng)導(dǎo)的科研項(xiàng)目,并獲得了很好的學(xué)習(xí)機(jī)會(huì)和成長(zhǎng)經(jīng)驗(yàn)…

    科研百科 2025年3月28日
    4
  • 技改項(xiàng)目管理系統(tǒng)下載

    技改項(xiàng)目管理系統(tǒng)下載 隨著科技的不斷發(fā)展,企業(yè)對(duì)于項(xiàng)目管理的要求也越來越高。為了更好地管理項(xiàng)目,許多企業(yè)都采用了技改項(xiàng)目管理系統(tǒng)。那么,如何下載技改項(xiàng)目管理系統(tǒng)呢?本文將為您介紹。…

    科研百科 2024年12月20日
    2
  • 婁底項(xiàng)目管理系統(tǒng)

    婁底項(xiàng)目管理系統(tǒng) 婁底項(xiàng)目管理系統(tǒng)是一種高效的項(xiàng)目管理軟件,可以幫助項(xiàng)目經(jīng)理和團(tuán)隊(duì)更好地管理項(xiàng)目進(jìn)度、質(zhì)量和成本。婁底項(xiàng)目管理系統(tǒng)采用了現(xiàn)代技術(shù)和方法,提供了全面的項(xiàng)目管理功能,包…

    科研百科 2024年12月10日
    2
  • 建筑施工企業(yè)管理軟件(施工企業(yè)管理軟件)

    施工企業(yè)管理軟件:讓施工管理更科學(xué)、更高效 隨著建筑行業(yè)的不斷發(fā)展,施工企業(yè)面臨著越來越多的挑戰(zhàn)。傳統(tǒng)的手動(dòng)施工管理方式已經(jīng)無法適應(yīng)現(xiàn)代建筑行業(yè)的發(fā)展,因此,施工企業(yè)管理軟件的出現(xiàn)…

    科研百科 2024年8月29日
    3
  • 高密市三舉措推進(jìn)離退休干部黨建工作檔案規(guī)范化管理(離退休干部黨建工作要求)

    大眾報(bào)業(yè)?大眾日?qǐng)?bào)客戶端 2021-12-05 18:42:40 高密扎實(shí)落實(shí)《濰坊市離退休干部基層黨建工作標(biāo)準(zhǔn)》,多措并舉,對(duì)全市各離退休干部基層黨組織黨建資料檔案進(jìn)行統(tǒng)一標(biāo)準(zhǔn)、…

    科研百科 2023年7月9日
    274
  • 房地產(chǎn)企業(yè)oa系統(tǒng)(房地產(chǎn)辦公系統(tǒng))

    房地產(chǎn)辦公系統(tǒng) 隨著房地產(chǎn)市場(chǎng)的不斷發(fā)展,房地產(chǎn)辦公系統(tǒng)作為其中的一個(gè)重要組成部分,也在不斷地更新和改進(jìn)。房地產(chǎn)辦公系統(tǒng)的作用是幫助房地產(chǎn)開發(fā)商和物業(yè)管理者更好地管理和協(xié)調(diào)他們的工…

    科研百科 2024年6月5日
    37
  • 事業(yè)單位科研項(xiàng)目管理

    事業(yè)單位科研項(xiàng)目管理 事業(yè)單位科研項(xiàng)目管理是保證科研項(xiàng)目質(zhì)量、進(jìn)度、效益的重要保障措施。隨著科技的快速發(fā)展,事業(yè)單位科研項(xiàng)目管理也在不斷變化和創(chuàng)新。本文將探討事業(yè)單位科研項(xiàng)目管理的…

    科研百科 2025年3月31日
    2
RM新时代官方网站