4張圖看明白用戶、許可權和租戶的關係

来源:https://www.cnblogs.com/xuanbg/archive/2020/03/17/12511509.html
-Advertisement-
Play Games

1、最簡單的用戶系統 一個最簡單的用戶系統,只需要有用戶和身份驗證兩個模塊就夠了。如圖: 這裡提示一下:上層數據依賴下層數據。舉個慄子,就是身份驗證需要依賴用戶數據。 2、具有許可權管理的用戶系統 如果需要進行許可權管理的話,那麼就加上資源和角色模塊。同時,在身份認證之後需要按需進行鑒權。 資源和用戶都 ...


1、最簡單的用戶系統

一個最簡單的用戶系統,只需要有用戶和身份驗證兩個模塊就夠了。如圖:

這裡提示一下:上層數據依賴下層數據。舉個慄子,就是身份驗證需要依賴用戶數據。

2、具有許可權管理的用戶系統

如果需要進行許可權管理的話,那麼就加上資源和角色模塊。同時,在身份認證之後需要按需進行鑒權。
資源和用戶都是最底層的數據,角色需要關聯用戶和資源完成對用戶的授權。瞭解RBAC模型的,應該很清楚這種關係。

3、帶有用戶組、組織機構的複雜系統

如果我們需要有用戶組輔助用戶管理,或者系統中需要有組織機構,並且支持對職位進行授權操作的話。我們可以再添加用戶組和組織機構模塊,這兩個模塊可以和用戶建立多對多的關係。同時,角色就可以通過和用戶組、組織機構和用戶建立間接的關係,這樣就可以簡化授權操作。

4、一個多租戶平臺

很多時候,我們需要有租戶的概念,使用租戶來分開用戶的業務數據。譬如釘釘就是一個多租戶系統,每家企業在釘釘裡面都是一個租戶。
我們可以在用戶之上增加租戶模塊,讓租戶和用戶、資源(應用)建立多對多的關係。同時,用戶組、組織機構和角色就都可以按租戶進行區分了。

假設每個租戶都有「管理員」這個角色,那麼1萬個租戶在系統裡面就會有1萬個名字叫管理員的角色,只不過每個租戶都只能看到自己的那個「管理員」角色罷了。如果A租戶建立了一個「業務員」角色,那麼B租戶是沒有這個角色的,他想要的話,必須自己去建立一個。

最後

在第4張圖裡面,用戶組、組織機構和租戶這幾個模塊都是可選的。模塊之間不應該存在耦合關係,只存在數據依賴關係。你需要什麼就實現什麼,並不需要一開始就全部實現。

看懂的請點個贊,以便讓更多的人看到。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前端HTML基礎知識學什麼?初學HTML從基礎知識入手,學習瀏覽器內核、HTML基本結構標簽、HTML語法規範、VSCode編輯器、HTML常用標簽、相對路徑、錨點定位、表格、列表、表單等內容。 前端HTML基礎知識學習路線: 1 瀏覽器與瀏覽器內核 HTML 簡介導讀 網頁的相關概念 常用瀏覽器以 ...
  • css3相較於css2.1增加了許多新的特性功能,目前主流瀏覽器chrome、safari、firefox、opera、甚至360都已經支持了CSS3大部分功能了,IE10以後也開始全面支持CSS3了,需要註意的是css3樣式在不同的瀏覽器可能需要不同的首碼(是瀏覽器的私有屬性,相容性),此外在代碼... ...
  • 'use strict' //引入node.js路勁模塊 const path = require('path') //引入utils工具模塊,utils主要用來處理css-loader和vue-style-loader的 const utils = require('./utils') //引入c ...
  • zepto中的DOM操作 插入操作 append appendTo 插在最後一個子元素後面 prepend prependTo 插在第一個子元素前面 after insertAfter 插在該元素後面,作為兄弟元素 before insertbefore 插在該元素後面,作為兄弟元素 <!DOCTY ...
  • vue前端項目中開發基於甘特圖的項目計劃模塊 參考鏈接 相比以前jquery的資料,vue的甘特圖插件少很多,中文資料更是少的可憐,以下兩個鏈接是在網上搜到相對還不錯的甘特圖插件 "https://www.cnblogs.com/liang715200/p/12029640.html" "https ...
  • [toc] 運用領域模型 交流與語言的使用 非原創,感謝《領域驅動設計》這本書 領域模型可成為軟體項目通用語言的核心。該模型是一組得自於項目人員頭腦中的概念,以及反映了領域深層含義的術語和關係。這些術語和相互關係提供了模型語言的語義,雖然語言是為領域量身定製的,但就技術開發而言,其依然足夠精確。正是 ...
  • [toc] 運用領域模型 消化知識 非原創,感謝《領域驅動設計》這本書 有效建模的要素 (1) 模型和實現的綁定。最初的原型雖然簡陋,但它在模型與實現之間建立了早期鏈接,而且在所有後續的迭代中我們一直在維護該鏈接。 (2) 建立了一種基於模型的語言。隨著項目的進展,雙方都能夠直接使用模型中的術語,並 ...
  • 設計模式中的原則和法則: 1、開閉原則: 開閉原則(Open Closed Principle,OCP)由勃蘭特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向對象軟體構造》(Object Oriented Software Construction)中提出:軟體實體應當對 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...