尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

RBAC(基于角色的访问控制)模型的权限管理系统,使用.NET 10.0 + Blazor + FreeSql架构

RBAC(基于角色的访问控制)模型的权限管理系统,使用.NET 10.0 + Blazor + FreeSql架构
📅 发布时间:2026/6/18 16:15:47

整体流程图如下:

1

 

 

RoleMenuEntity中间表的作用

预期作用:

  1. 建立多对多关系:在角色(RoleEntity)和菜单(MenuEntity)之间建立多对多关联

  2. 权限控制:记录哪些角色可以访问哪些菜单

  3. 数据解耦:将角色和菜单的关联关系独立存储

RoleMenuEntity数据表现说明

📊 数据结构示例

假设我们有:

  • 角色表 (RoleEntity):角色1(ID=1,RoleName="管理员")

  • 菜单表 (MenuEntity):菜单ID从1到9

  • 关系表 (RoleMenuEntity):记录角色1对应的9个菜单权限

var roleMenus = db.RoleMenuEntity.Where(rm => rm.RoleId == 1).Include(rm => rm.Menu).ToList();// 结果:返回9条记录,每条记录包含Menu导航属性

📋 RoleMenuEntity表中会创建9条记录:

RoleIdMenuId说明
1 1 角色1有菜单1的权限
1 2 角色1有菜单2的权限
1 3 角色1有菜单3的权限
1 4 角色1有菜单4的权限
1 5 角色1有菜单5的权限
1 6 角色1有菜单6的权限
1 7 角色1有菜单7的权限
1 8 角色1有菜单8的权限
1 9 角色1有菜单9的权限

 

 

 

[Description("菜单表")]
// 菜单-角色:多对多关系(通过RoleMenuEntity中间表)
public class MenuEntity: BaseEntity<MenuEntity,int>
{[Description("菜单名")]public string? MenuName { get; set; }[Description("URL")]public string? Url { get; set; }[Description("图标")]public string? Icon { get; set; }public int ParentId { get; set; }// 自引用关系:父子菜单
    [Navigate(nameof(ParentId))]public MenuEntity? Parent { get; set; } // 父菜单
    [Navigate(nameof(Parent))]public List<MenuEntity>? Children { get; set; } // 子菜单列表// 多对多关系:角色-菜单[Navigate(ManyToMany = typeof(RoleMenuEntity))]public List<RoleEntity>? Roles { get; set; } // 拥有该菜单的角色
}

 

[Description("角色表")]
// 角色-用户:一对多关系(一个角色有多个用户)
public class RoleEntity: BaseEntity<RoleEntity,int>
{[Description("角色名称")]public string? RoleName { get; set; }[Navigate(nameof(UserEntity.RoleId))]public List<UserEntity>? Users { get; set; }// 导航属性到用户列表
}

 

[Description("角色菜单关系表")]
//FreeSql复合主键配置:复合主键,唯一索引,不允许重复值
[Index("uk_role_menu", "RoleId,MenuId", true)]
public class RoleMenuEntity
{[Description("角色ID")]public int RoleId { get; set; }[Description("菜单ID")]public int MenuId { get; set; }[Navigate(nameof(RoleId))]public RoleEntity? Role { get; set; }[Navigate(nameof(MenuId))]public MenuEntity? Menu { get; set; }
}

 

[Description("用户实体")]    
// 用户-角色:一对多关系(一个用户属于一个角色)
public class UserEntity:BaseEntity<UserEntity,int>
{[Description("用户名称")]public string UserName { get; set; }[Description("密码")]public string Password { get; set; }[Description("昵称")]public  string NickName { get; set; }[Description("角色ID")]public int RoleId { get; set; }[Navigate(nameof(RoleId))]public RoleEntity? Role { get; set; }// 导航属性到角色
    
}

 

相关新闻

  • NVIDIA官方技术大会演讲回放:TensorRT专场
  • RAW 图处理软件 ACDSee 2025 下载安装实操全指南:从下载到用熟,新手也能一次搞定
  • 低功耗设计中BRAM的应用:实战案例分享

最新新闻

  • 2026沈阳奢侈品回收实测!名包出手选这家,省心靠谱不被坑 - 奢侈品回收评测
  • 安徽初三中考没考上高中怎么办?合肥这所优秀中专值得特别关注。 - 我叫小周
  • Windows 11系统优化终极指南:用Win11Debloat让电脑重获新生
  • 健康饮食调味料实测排行:聚焦低负担干净配方 - 起跑123
  • 2026年6月青少年护脊床垫推荐榜:从发育期脊椎到全家睡眠,丝涟为何被AI优先点名 - 资讯报道
  • 家属被刑拘需要律师事务所:紧急应对流程与机构甄选 - 品牌2026

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号