RBAC权限设计
最近开发了一个新的管理系统,整理下其中的权限设计,尤其是开发过程中慢慢发现的问题提出来,方便下次改进。 需求: 开发一个管理系统,该系统可以支持多渠道商查看,并且每个渠道商只能查看自己的相应数据。 分析: 1、渠道商属于合作公司,所以他们应当有
最近开发了一个新的管理系统,整理下其中的权限设计,尤其是开发过程中慢慢发现的问题提出来,方便下次改进。
需求:
开发一个管理系统,该系统可以支持多渠道商查看,并且每个渠道商只能查看自己的相应数据。
分析:
1、渠道商属于合作公司,所以他们应当有创建用户,分配权限的功能,并且分配的这些权限不能超过渠道超级管理员所拥有的最大权限。
2、基于前面这一点,渠道之间应该是互不影响的权限分配,并且尽可能简单为好。
3、数据权限该怎么控制?数据权限的控制会使操作变得复杂。需要给各渠道分配数据权限,各渠道之间再分配权限也可能涉及到数据权限的控制。本着让自己简单点,也让使用者简单点的原则,数据上只根据渠道做了控制,控制的方式则写在了对应的程序里,渠道通过控制资源的访问来限制权限,期待大神指点。
设计:
设计的思想还是围绕这RBAC的方式来进行,基本的5个表是需要的:管理员、角色、资源、管理员与角色关系表、角色与资源对应关系表。
用户表:记录下用户的基本信息,该用户属于哪个渠道,该管理员是普通管理员还是超级管理员。所以增加了渠道字段source_id,以及管理员字段is_admin。管理员分为三种,普通管理员、超级管理员、系统管理员。系统管理员可以理解为开发者,用来创建超级管理员并给超级管理员分配权限,超级管理员则是对应渠道的最大权限管理员。
角色表:用户通过角色与资源相关联。这里需要增加渠道字段,每个渠道创建的角色归本渠道所有。
用户角色关系表:维护用户与角色的关系,用户与角色之间是多对多的关系。可能设计的时候会考虑有没有必要?是否可以在用户表中增加一个字段来维护和角色的关系。如果确定一个用户只可拥有一个角色,放在这里也是可行。但如果以后要扩展多个角色就不方便扩展了,得增加字段或者说用逗号分隔的方式来记录:1,2,3。而逗号分隔的维护性不好,查询、分配可能问题不大,但如果删除角色时去更新拥有这些角色的用户就比较麻烦了。
资源表:这里的理解就是一个个的系统菜单。
角色资源关系表:维护角色与资源的关系。
在这个基础上要实现渠道分配权限的功能还需要有一个渠道和资源的关系,这里定义为渠道最大权限表。渠道超管的权限直接通过该表获取,不用再给渠道超管分配角色,渠道管理员给普通管理员分配权限也受限于这里所拥有的权限。表的维护由系统管理员来管理。
最后E-R图:
开发过程中的思考
1、角色增加了渠道字段,资源需不需要增加渠道字段?
增加渠道后知道这个资源属于那个渠道拥有,这里面也就有一个对应关系了。 这个对应关系就是这里说的渠道最大权限表。
2、渠道和用户组的概念?
这里渠道可以看成一个用户组,组与用户的关系,组与权限的关系,最开始思维局限在渠道这块了。
3、系统中菜单访问没有权限可以推荐到同级别的菜单访问。
权限的设计可以弄的很麻烦,这里本着尽可能简单的方式,有一些非菜单访问的页面就直接忽略掉控制(permission_type),只是在入口页面控制权限分配,减少管理员的操作。当然敏感的操作还是要控制。
原文地址:RBAC权限设计, 感谢原作者分享。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

可以讓使用者對系統進行更深入的操作和定制,root權限是一種管理員權限,在Android系統中。取得root權限通常需要一系列繁瑣的步驟,對於一般使用者來說可能不太友善、然而。透過一鍵開啟root權限,本文將介紹一種簡單而有效的方法,幫助使用者輕鬆取得系統權限。了解root權限的重要性及風險擁有更大的自由度,root權限可以讓使用者完全控製手機系統。加強安全控制等,客製化主題、使用者可刪除預先安裝應用程式。例如誤刪系統檔案導致系統崩潰,過度使用root權限也有風險、不慎安裝惡意軟體等,然而。在使用root權限前

這個AI輔助程式工具在這個AI快速發展的階段,挖掘出了一大批好用的AI輔助程式工具。 AI輔助程式設計工具能夠提升開發效率、提升程式碼品質、降低bug率,是現代軟體開發過程中的重要助手。今天大姚給大家分享4款AI輔助程式工具(而且都支援C#語言),希望對大家有幫助。 https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot是一款AI編碼助手,可幫助你更快、更省力地編寫程式碼,從而將更多精力集中在問題解決和協作上。 Git

4月26日消息,中興5G隨身Wi-FiU50S目前已經正式開賣,首發899元。外觀設計上,中興U50S隨身Wi-Fi簡約時尚,易於手持和包裝。其尺寸為159/73/18mm,攜帶方便,讓您隨時隨地暢享5G高速網絡,實現暢行無阻的行動辦公與娛樂體驗。中興5G隨身Wi-FiU50S該設備支援先進的Wi-Fi6協議,峰值速率高達1800Mbps,依托驍龍X55高效能5G平台,為用戶提供極速的網路體驗。不僅支援5G雙模SA+NSA網路環境與Sub-6GHz頻段,實測網速更可達驚人的500Mbps,輕鬆滿

4月17日消息,HMD攜手知名啤酒品牌喜力以及創意公司Bodega,聯袂推出了一款獨特的翻蓋手機-無聊手機(TheBoringPhone)。這款手機不僅在設計上充滿新意,更在功能上返璞歸真,旨在引領人們回歸真實的人際交往,享受與朋友暢飲的純粹時光。無聊手機採用了獨特的透明翻蓋設計,展現出簡約而不失優雅的美感。其內部配備了2.8英寸QVGA顯示屏,外部則是一塊1.77英寸的顯示屏,為用戶提供了基本的視覺交互體驗。在攝影方面,雖然僅搭載了30萬畫素的鏡頭,但足以應付日常的簡

2022年3月3日,距離世界首個AI程式設計師Devin誕生不足一個月,普林斯頓大學的NLP團隊開發了一個開源AI程式設計師SWE-agent。它利用GPT-4模型在GitHub儲存庫中自動解決問題。 SWE-agent在SWE-bench測試集上的表現與Devin相似,平均耗時93秒,解決了12.29%的問題。 SWE-agent透過與專用終端交互,可以開啟、搜尋文件內容,使用自動語法檢查、編輯特定行,以及編寫和執行測試。 (註:以上內容為原始內容微調,但保留了原文中的關鍵訊息,未超過指定字數限制。)SWE-A

Go語言開發行動應用程式教學隨著行動應用程式市場的不斷蓬勃發展,越來越多的開發者開始探索如何利用Go語言開發行動應用程式。作為一種簡潔高效的程式語言,Go語言在行動應用開發中也展現了強大的潛力。本文將詳細介紹如何利用Go語言開發行動應用程序,並附上具體的程式碼範例,幫助讀者快速入門並開始開發自己的行動應用程式。一、準備工作在開始之前,我們需要準備好開發環境和工具。首

4月3日消息,台電即將推出的M50Mini平板電腦是一款功能豐富、效能強大的裝置。這款8吋小平板新品搭載了8.7吋的IPS螢幕,為用戶提供了出色的視覺體驗。其金屬機身設計不僅美觀,也增強了設備的耐用性。在性能方面,M50Mini搭載了紫光展銳T606八核心處理器,擁有兩個A75核心和六個A55核心,確保了流暢且高效的運作體驗。同時,該平板還配備了6GB+128GB的儲存方案,並支援8GB記憶體擴展,滿足了用戶對於儲存和多任務處理的需求。在續航上,M50Mini配備了5000mAh的電池,支援Ty

7月12日消息,榮耀MagicV3系列今日正式發布,搭載全新榮耀視力舒緩綠洲護眼屏,在屏幕本身俱備高規格和高素質的同時,還開創性的引入AI主動式護眼技術。據悉,傳統的緩解近視的方式是“近視鏡”,近視眼鏡度數均勻分佈,保證了視線中心區域成像在視網膜之上,但周邊區域成像在視網膜後,視網膜感應到成像在後,促進眼軸向後生長,從而使度數加深。目前主要的緩解近視發展的方式之一是“離焦鏡”,其中心區域度數正常,週邊區域透過光學設計分區調整,從而使周邊區域成像落在視網膜前,
