企业级权限表结构设计经典设计--纯个人分享

权限体系设计

    • 我的数据库表结构:
    • 🔐 碳管理系统权限体系详解
      • 🏗️ **核心架构:多租户RBAC模型**
      • 📊 **权限表关系**
      • 🔗 **权限控制流程**
      • 🎯 **权限验证维度**
      • 📋 **关键安全特性**
      • 🛠️ **分析工具**
      • 🚀 **使用方法**

我的权限表设计思路如下:
  1. 采用RBAC(基于角色的访问控制)模型

  2. 主要包含四个核心表:

    • 用户表:存储用户基本信息
    • 角色表:定义系统角色
    • 权限表:记录具体操作权限
    • 用户角色关联表:建立用户与角色的多对多关系
    • 角色权限关联表:建立角色与权限的多对多关系
  3. 设计特点:

    • 通过角色间接分配权限,简化权限管理
    • 支持权限继承,上级角色自动继承下级权限
    • 预留字段支持权限扩展
    • 使用状态标识实现权限的灵活启用/禁用
  4. 优化考虑:

    • 建立合适的索引提升查询效率
    • 使用外键确保数据完整性
    • 通过缓存机制减少频繁查询
  5. 实现租户级别的用户隔离

我的数据库表结构:

/* SQLyog Ultimate v13.1.1 (64 bit) MySQL - 8.0.30 : Database - carbon_management ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE=''*/;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;CREATEDATABASE/*!32312 IF NOT EXISTS*/`carbon_management`/*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci *//*!80016 DEFAULT ENCRYPTION='N' */;USE`carbon_management`;/*Table structure for table `sys_permission` */DROPTABLEIFEXISTS`sys_permission`;CREATETABLE`sys_permission`(`id`varchar(36)NOTNULL,`code`varchar(100)NOTNULL,`name`varchar(50)NOTNULL,`description`varchar(200)DEFAULTNULL,`resource_type`varchar(20)NOTNULL,`resource_url`varchar(200)DEFAULTNULL,`resource_method`varchar(20)DEFAULTNULL,`parent_id`varchar(36)DEFAULTNULL,`sort_order`intDEFAULTNULL,`tenant_id`varchar(36)NOTNULL,`created_by`varchar(36)NOTNULL,`created_time`datetimeNOTNULL,`updated_by`varchar(36)DEFAULTNULL,`updated_time`datetimeDEFAULTNULL,PRIMARYKEY(`id`),UNIQUEKEY`code`(`code`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ci;/*Table structure for table `sys_role` */DROPTABLEIFEXISTS`sys_role`;CREATETABLE`sys_role`(`id`varchar(36)NOTNULL,`code`varchar(50)NOTNULL,`name`varchar(50)NOTNULL,`description`varchar(200)DEFAULTNULL,`tenant_id`varchar(36)NOTNULL,`created_by`varchar(36)NOTNULL,`created_time`datetimeNOTNULL,`updated_by`varchar(36)DEFAULTNULL,`updated_time`datetimeDEFAULTNULL,`status`varchar(1)DEFAULT'1',PRIMARYKEY(`id`),UNIQUEKEY`code`(`code`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ci;/*Table structure for table `sys_role_permission` */DROPTABLEIFEXISTS`sys_role_permission`;CREATETABLE`sys_role_permission`(`role_id`varchar(36)NOTNULL,`permission_id`varchar(36)NOTNULL,PRIMARYKEY(`role_id`,`permission_id`),KEY`permission_id`(`permission_id`),CONSTRAINT`sys_role_permission_ibfk_1`FOREIGNKEY(`role_id`)REFERENCES`sys_role`(`id`)ONDELETECASCADE,CONSTRAINT`sys_role_permission_ibfk_2`FOREIGNKEY(`permission_id`)REFERENCES`sys_permission`(`id`)ONDELETECASCADE)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ci;/*Table structure for table `sys_tenant` */DROPTABLEIFEXISTS`sys_tenant`;CREATETABLE`sys_tenant`(`id`varchar(36)NOTNULL,`code`varchar(50)NOTNULL,`name`varchar(100)NOTNULL,`description`varchar(500)DEFAULTNULL,`contact_name`varchar(50)DEFAULTNULL,`contact_phone`varchar(20)DEFAULTNULL,`contact_email`varchar(100)DEFAULTNULL,`status`enum('ACTIVE','INACTIVE','EXPIRED','SUSPENDED')NOTNULL,`carbon_quota`decimal(38,2)DEFAULTNULL,`quota_expiration_date`datetimeDEFAULTNULL,`created_by`varchar(36)NOTNULL,`created_time`datetimeNOTNULL,`updated_by`varchar(36)DEFAULTNULL,`updated_time`datetimeDEFAULTNULL,PRIMARYKEY(`id`),UNIQUEKEY`code`(`code`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ci;/*Table structure for table `sys_user` */DROPTABLEIFEXISTS`sys_user`;CREATETABLE`sys_user`(`id`varchar(36)NOTNULL,`username`varchar(50)NOTNULL,`password`varchar(255)NOTNULL,`real_name`varchar(50)NOTNULL,`email`varchar(100)DEFAULTNULL,`phone`varchar(20)DEFAULTNULL,`status`enum('ACTIVE','INACTIVE','LOCKED','DELETED')NOTNULL,`tenant_id`varchar(36)NOTNULL,`created_by`varchar(36)NOTNULL,`created_time`datetimeNOTNULL,`updated_by`varchar(36)DEFAULTNULL,`updated_time`datetimeDEFAULTNULL,`last_login_time`datetimeDEFAULTNULL,`last_login_ip`varchar(50)DEFAULTNULL,PRIMARYKEY(`id`),UNIQUEKEY`username`(`username`),KEY`idx_sys_user_username`(`username`),KEY`idx_sys_user_tenant_id`(`tenant_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ci;/*Table structure for table `sys_user_role` */DROPTABLEIFEXISTS`sys_user_role`;CREATETABLE`sys_user_role`(`user_id`varchar(36)NOTNULL,`role_id`varchar(36)NOTNULL,`id`intNOTNULLAUTO_INCREMENT,`created_by`varchar(36)DEFAULTNULL,`created_time`timestampNULLDEFAULTNULL,PRIMARYKEY(`user_id`,`role_id`,`id`),KEY`role_id`(`role_id`),KEY`id`(`id`),CONSTRAINT`sys_user_role_ibfk_1`FOREIGNKEY(`user_id`)REFERENCES`sys_user`(`id`)ONDELETECASCADE,CONSTRAINT`sys_user_role_ibfk_2`FOREIGNKEY(`role_id`)REFERENCES`sys_role`(`id`)ONDELETECASCADE)ENGINE=InnoDBAUTO_INCREMENT=46DEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ci;/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

🔐 碳管理系统权限体系详解

提供的数据库表结构,我给大家分析下完整的权限体系:

🏗️核心架构:多租户RBAC模型

租户 (sys_tenant) ├── 用户 (sys_user) │ └── ←→ 角色 (sys_role) │ └── ←→ 权限 (sys_permission) └── 数据隔离边界

📊权限表关系

表名作用关键字段
sys_tenant租户管理code, name, status, carbon_quota
sys_user用户管理username, password, tenant_id, status
sys_role角色管理code, name, tenant_id, status
sys_permission权限管理code, resource_url, resource_method
sys_user_role用户角色关联user_id, role_id
sys_role_permission角色权限关联role_id, permission_id

🔗权限控制流程

  1. 多租户隔离user.tenant_id控制数据访问范围
  2. 角色分配:通过sys_user_role关联表
  3. 权限授权:通过sys_role_permission关联表
  4. API验证:基于resource_urlresource_method

🎯权限验证维度

用户请求
JWT解析
用户身份验证
租户权限检查
角色权限检查
API权限验证
允许/拒绝访问

📋关键安全特性

  1. 多租户数据隔离

    • 每个用户绑定特定租户
    • 跨租户数据访问被严格禁止
    • 租户配额和状态管理
  2. 细粒度权限控制

    • 资源类型分类
    • HTTP方法级别权限(GET/POST/PUT/DELETE)
    • 支持权限层次结构(parent_id)
  3. RBAC角色管理

    • 用户可多角色
    • 角色权限灵活配置
    • 租户级角色定制

🛠️分析工具

我已创建了完整的分析工具:

  1. analyze-permissions.sql- 全面权限数据分析
  2. visualize-permissions.sql- 权限关系可视化
  3. check-permissions.bat- 一键执行分析
  4. PERMISSION_SYSTEM.md- 详细文档

🚀使用方法

cdc:/DevOpsK8s/ABC/carbon-manage-platform ./check-permissions.bat

这将显示:

  • 所有租户、用户、角色、权限的完整关系
  • 权限分配统计
  • 用户具体权限详情
  • 权限层次结构

这个权限体系设计非常完善,支持企业级多租户场景,具有良好的扩展性和安全性!
大家有好的建议可以一起学习,欢迎提出改进意见

需要分析工具的可以私信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1018711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

34、深入探索 awk 程序的国际化与调试

深入探索 awk 程序的国际化与调试 一、awk 程序的国际化 在软件开发中,让程序支持多语言是一项重要的任务,这不仅能扩大程序的使用范围,还能提升用户体验。awk 程序也不例外,下面我们来详细了解如何对 awk 程序进行国际化处理。 1. 提取标记字符串 当你的 awk 程序运行正…

2025年国内专业的尘埃粒子计数器生产厂家排行榜,大流量尘埃粒子计数器/尘埃粒子计数器/尘埃粒子检测仪/尘埃粒子计数器公司电话 - 品牌推荐师

随着半导体、生物医药、精密制造等高科技产业的蓬勃发展,洁净环境监测的重要性日益凸显。尘埃粒子计数器作为洁净度监测的核心设备,其市场需求持续增长,也推动了国内相关制造企业的技术升级与品牌分化。本文基于公开…

why you should not respect biologists

biologists are someone will take respects as your L.

Ubuntu如何判断获取到的IP地址是静态IP还是动态?

在 Ubuntu 系统中,可以通过以下方法判断当前 IP 是动态获取(DHCP)还是静态配置:一、通过命令行工具查看 IP 信息 1. 使用 ip addr 或 ifconfig 命令 动态 IP:输出中会显示 dynamic 或 DHCP 标记。ip addr show eth0 # …

35、深入了解gawk调试器命令

深入了解gawk调试器命令 在进行gawk程序调试时,掌握调试器的各种命令至关重要。gawk调试器命令可分为以下几类: 1. 断点控制 2. 执行控制 3. 查看和更改数据 4. 栈操作 5. 获取信息 6. 杂项命令 断点控制 在调试会话中,首先要做的通常是设置断点,否则程序会像未处…

Java-175 FastDFS 6.15.0+Nginx 动态模块实战:源码编译到访问,从0到1详细安装流程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

36、深入了解gawk调试器及算术运算特性

深入了解gawk调试器及算术运算特性 1. gawk调试器的局限性 gawk调试器虽然实用且有趣,但仍存在一些局限性,值得我们关注: - 错误提示不详细 :当输入调试器不认可的内容时,它仅返回“语法错误”,不会详细解释错误原因。不过,当你最终找出错误时,会有很强的成就感。 …

MQTT客户端快速调试工具实践记录

工具获取地址:https://github.com/emqx/MQTTX 工具配置过程参考上述网站介绍:需要注意的是: 1、先配置topic(上图右下角的)2、要查看消息发送是否成功,有2个方法: 1)在工具界面 新增…

抖音企业号运营公司权威口碑排行发布,抖音运营公司/抖音推广/短视频代运营/企业号代运营/小红书代运营抖音企业号运营公司排行 - 品牌推荐师

随着短视频营销进入深水区,企业对抖音企业号运营的专业性要求日益攀升。市场在呼唤能够真正带来转化、实现品效合一的专业服务商。基于公开市场数据、客户反馈、服务案例及行业影响力等多维度综合评估,我们梳理出当前…

44898条新闻文本假新闻检测数据集分析报告-包含政治世界新闻完整内容标注-2016-2017年多主题分类-用于机器学习模型训练和媒体可信度评估研究

引言与背景 在数字媒体快速发展的今天,虚假新闻已成为全球范围内的严峻挑战,其传播速度之快、影响范围之广对公众判断、社会稳定乃至民主进程构成重大威胁。特别是在社交媒体普及的背景下,虚假信息往往能够借助算法推荐和用户分享在短时间内…

ubuntu网络管理功能分析

Ubuntu系统自带网络管理功能,但具体实现方式因版本(桌面版/服务器版)和安装类型而异,核心工具包括NetworkManager(桌面版默认)、systemd-networkd(服务器版默认)和netplan&#xff0…

推荐几款性价比高的模温机?

模温机是注塑模具温度控制的关键设备,选择性价比高的产品需综合考虑加热功率、控温精度、品牌可靠性及售后服务。下面推荐基于当前市场常见选项,优先考虑价格与功能的平衡。一、国内品牌南京欧能机械:作为国内知名模温机品牌,南京…

37、gawk的高精度整数运算与扩展开发

gawk的高精度整数运算与扩展开发 1. gawk的任意精度整数运算 在gawk中,当使用 -M 选项时,它会使用GMP任意精度整数来执行所有整数运算。源文件或数据文件中任何看起来像整数的数字都会被存储为任意精度整数,其大小仅受可用内存限制。 例如,计算 5^4^3^2 ,其结果超出…

GC自动点击器2.2.78| 功能强大的自动点击工具,可设置自动刷视频红包~抢票

GC自动点击工具是一款高效的自动化操作应用,可实现自定义时长的点击与滑动指令设定。 无论是游戏操作、社交平台互动点赞,还是各类重复性任务处理,均能有效替代人工完成机械操作。 该工具的核心优势体现在:灵活定制点击滑动参数…

关于雷劈数的一些研究

一、雷劈数的定义背景:有个数学家走在路上看见一个 3025 的路牌被劈成 30 和 25 了,他发现 (3025)23025,因此称这种数为雷劈数。比较小的雷劈数有 81(81)2,100(100)2。雷劈数的定义大概为:将数 N的十进制表示从某处分成两半 a和 b…

38、深入探索 gawk 扩展开发:性能优化与功能定制

深入探索 gawk 扩展开发:性能优化与功能定制 1. 变量访问性能优化 在 gawk 中,每次访问和修改变量时,会有性能损耗,因为 gawk 必须每次都查找变量。这并非只是理论问题,而是实际存在的性能瓶颈。 为了解决这个问题,如果你的扩展需要花费大量时间读取和/或修改变量的值,…

Godot GDExtension 4.5 windows编译记录

[Godot GDExtension] 记一次从 Mac 移植到 Windows 的 C 编译踩坑与完美解决方案 前言 最近在开发 Godot 4.x 的 GDExtension 插件(基于 godot-cpp)。在 Mac 上开发一切顺利,代码编译运行完美。然而,当我尝试将项目移植到 Windows…

IDM v6.42.56 | 电脑最强的下载器,多线程,速度拉满,嗅探网页视频

Internet Download Manager(简称IDM)作为一款高效的下载管理工具, 凭借独特的多线程分割下载与断点续传机制,实现了下载效率的显著提升,对大型文件的处理优势尤为明显。 该软件支持在网络故障等突发情况下恢复中断的…

Rabin-Karp算法

希函数将模式串和文本串中的子串转换为数值进行比较,避免大量不必要的字符比较。这个算法特别适合多模式串匹配场景,时间复杂度平均为O(nm),n是文本串长度,m是模式串长度。Rabin-Karp算法的关键在于使用滚动哈希函数(R…

LobeChat开发者必读:最佳实践与常见问题解决方案汇总

LobeChat开发者必读:最佳实践与常见问题解决方案汇总 在大语言模型(LLM)快速普及的今天,越来越多开发者不再满足于“调用API 简单前端”的粗糙交互方式。如何构建一个既美观又灵活、既能对接多种模型又能保障数据安全的AI助手界面…