.NET 9 + React 开发的企业级后台权限管理系统,文档齐全,轻松上手
<h2 id="前言">前言</h2><p>在数字化转型浪潮中,高效且安全的权限管理是后台系统的核心基石。传统方案或依赖臃肿的三方框架,或难以满足细粒度权限需求。</p>
<p>今天推荐一款完全独立开发、基于前沿技术栈开发的RBAC权限系统。它摒弃了现成Admin框架的束缚,以 ".NET 9 + React 18" 双引擎驱动,深度融合按钮级权限与数据权限控制,并原生支持多租户架构,为开发者与企业提供高可控性、易扩展的后台管理基座。</p>
<h2 id="项目介绍">项目介绍</h2>
<p>风汐管理系统一款开源的通用后台权限解决方案,由作者独立设计并实现,未使用任何第三方Admin框架。</p>
<p>其核心目标是为个人开发与企业提供一套高效、美观、易上手的管理系统基座。系统深度集成RBAC(基于角色的访问控制)模型,支持细粒度的按钮操作权限与数据范围权限,并内置多租户隔离机制,满足SaaS化部署需求。</p>
<p>项目采用严格挑选的稳定技术栈(.NET 9 + React 18),确保代码具有优秀的扩展性、可维护性与快速定制能力,在为.NET + React 技术生态贡献高质量实践范例。</p>
<p><img src="https://img2024.cnblogs.com/blog/576536/202507/576536-20250709091212900-578568236.png" width="70%" loading="lazy" style="display: block; margin-left: auto; margin-right: auto"></p>
<h2 id="项目功能">项目功能</h2>
<p>风汐管理系统提供丰富的功能模块,涵盖了从用户认证到权限管理的各个方面:</p>
<p><strong>角色管理</strong>:支持创建、编辑和删除角色,分配权限。</p>
<p><strong>权限管理</strong>:提供细粒度的权限控制,支持按钮级别和数据级别权限。</p>
<p><strong>菜单管理</strong>:允许管理员自定义系统菜单,配置显示顺序。</p>
<p><strong>日志管理</strong>:记录用户的操作日志,便于审计和问题排查。</p>
<p><strong>系统监控</strong>:查看在线用户,确保信息传达及时。</p>
<p><strong>多租户支持</strong>:每个租户拥有独立的数据存储,互不影响。</p>
<h2 id="项目特点">项目特点</h2>
<p>1、支持多租户:每个租户的数据相互隔离,确保数据安全。</p>
<p>2、按钮级别权限控制:精确控制用户对页面元素的操作权限。</p>
<p>3、简洁高效的用户界面:采用现代化设计语言,提升用户体验。</p>
<p>4、模块化的系统架构:各功能模块独立开发,便于维护和扩展。</p>
<p>5、可读性高代码结构:代码编写遵循最佳实践,易于理解和修改。</p>
<h2 id="项目技术">项目技术</h2>
<p>风汐管理系统的技术栈选用了当前最为前沿和稳定的工具与框架,具体包括:</p>
<ul>
<li>
<p>.NET Core:作为后端开发的基础框架,提供了强大的性能和安全性。</p>
</li>
<li>
<p>PostgreSQL:作为数据库管理系统,支持复杂查询和大数据量处理。</p>
</li>
<li>
<p>FreeSql:用于简化数据库操作,提供ORM支持。</p>
</li>
<li>
<p>Aop:面向切面编程,用于实现横切关注点的分离。</p>
</li>
<li>
<p>Redis:用于缓存和会话管理,提高系统响应速度。</p>
</li>
<li>
<p>EventBus:事件总线机制,方便异步通信和解耦。</p>
</li>
<li>
<p>AutoMapper:对象映射工具,简化数据转换过程。</p>
</li>
<li>
<p>Serilog:日志记录库,支持多种输出方式。</p>
</li>
<li>
<p>React:前端开发框架,支持组件化开发。</p>
</li>
<li>
<p>Ant Design:UI组件库,提供丰富的组件和样式。</p>
</li>
<li>
<p>Vite:前端构建工具,优化开发体验和生产性能。</p>
</li>
<li>
<p>Sass/SCSS:CSS预处理器,增强样式的复用性和可维护性。</p>
</li>
</ul>
<h2 id="项目代码">项目代码</h2>
<p><strong>1、服务自动注册</strong></p>
<p>实现了注册接口</p>
<p>实现ISingletonDependency将以单例注入</p>
<pre><code class="language-cs">public interface ISingletonDependency
{
}
</code></pre>
<p>实现ITransientDependency将以瞬时注入</p>
<pre><code class="language-cs">public interface ITransientDependency
{
}
</code></pre>
<p>实现IScopedDependency将以作用域注入</p>
<pre><code class="language-cs">public interface IScopedDependency
{
}
</code></pre>
<p>类上标记依赖注入DenpendencyInjectAttribute</p>
<pre><code class="language-cs">/// <summary>
/// 自动注入,标记此特性的类会被自动注册到依赖注入容器中 <br/>
/// 如果AsSelf为false且Interfaces为空,则不会注册
/// </summary>
public sealed class DenpendencyInjectAttribute : Attribute
{
/// <summary>
/// 注册方式
/// </summary>
public DenpendencyType Way { get; init; } = DenpendencyType.Scoped;
/// <summary>
/// 是否将当前类作为自身类型注入
/// </summary>
public bool AsSelf { get; init; }
/// <summary>
/// 实现的接口类型,如果不为空且AsSelf=false,则会将当前类注册为这些接口的实现;
/// </summary>
public Type[]? Interfaces { get; init; }
}
</code></pre>
<p><strong>2、当前租户</strong></p>
<pre><code class="language-cs">public interface ICurrentTenant
{
string? TenantId { get; }
}
</code></pre>
<p>注入ICurrentTenant接口,在启用多租户功能时,并且请求头中含X-Tenant时;多租户中间件会自动解析X-Tenant的值到TenantId</p>
<p><strong>3、如何启用多租户</strong></p>
<p>在MultiTenancyConsts.cs文件中将IsEnabled改为false</p>
<pre><code class="language-cs">public static class MultiTenancyConsts
{
/// <summary>
/// 是否启用多租户(不做成配置,常量硬编码更好)
/// </summary>
public const bool IsEnabled = true;
}
</code></pre>
<p>为什么使用作者常量硬编码更好?因为一个系统从开始就必须考虑好是否需要多租户模式。</p>
<h2 id="项目预览">项目预览</h2>
<p>1、在线预览地址:https://crackerwork.cn</p>
<p>2、预览账号<code>admin/123qwe*</code> (请注意,预览模式下屏蔽了非GET请求,仅供查看演示)</p>
<p>3、项目文档</p>
<p><img src="https://img2024.cnblogs.com/blog/576536/202507/576536-20250709091147057-2136122243.png" width="50%" loading="lazy" style="display: block; margin-left: auto; margin-right: auto"></p>
<h2 id="项目效果">项目效果</h2>
<p>系统通过简洁高效的用户界面和强大的功能模块,极大地提升了用户的操作体验。</p>
<p>以下是部分系统截图展示:</p>
<p><strong>1、系统登录</strong></p>
<p><img src="https://img2024.cnblogs.com/blog/576536/202507/576536-20250709091318401-1675553443.png" width="70%" loading="lazy" style="display: block; margin-left: auto; margin-right: auto"></p>
<p><strong>2、系统首页</strong></p>
<p><img src="https://img2024.cnblogs.com/blog/576536/202507/576536-20250709091329172-1723327492.png" width="70%" loading="lazy" style="display: block; margin-left: auto; margin-right: auto"></p>
<p><strong>3、组织架构</strong></p>
<p><img src="https://img2024.cnblogs.com/blog/576536/202507/576536-20250709091337205-1905702455.png" width="70%" loading="lazy" style="display: block; margin-left: auto; margin-right: auto"></p>
<p><strong>4、系统管理</strong></p>
<p><img src="https://img2024.cnblogs.com/blog/576536/202507/576536-20250709091347228-1793557800.png" width="70%" loading="lazy" style="display: block; margin-left: auto; margin-right: auto"></p>
<p><strong>5、数据字典</strong></p>
<p><img src="https://img2024.cnblogs.com/blog/576536/202507/576536-20250709091357152-2097005082.png" width="70%" loading="lazy" style="display: block; margin-left: auto; margin-right: auto"></p>
<p><strong>6、系统监控</strong></p>
<p><img src="https://img2024.cnblogs.com/blog/576536/202507/576536-20250709091406071-1037316193.png" width="70%" loading="lazy" style="display: block; margin-left: auto; margin-right: auto"></p>
<h2 id="项目源码">项目源码</h2>
<p><strong>GitHub:</strong> https://github.com/fancyxnet/fancyx-admin</p>
<p><strong>Gitee:</strong> https://gitee.com/fancyxnet/fancyx-admin</p>
<p>大家可以通过克隆仓库获取源码,并根据自己的需求进行二次开发或定制化修改。</p>
<h2 id="总结">总结</h2>
<p>风汐管理系统(fancyx-admin)代表了.NET全栈开发的深度实践。它以完全独立开发之姿,融合.NET 9的高性能与React 18的现代化交互,打造出一套功能完备(RBAC+多租户)、体验卓越、扩展自由的权限管理基座。</p>
<p>其核心价值不仅在于提供按钮级与数据级的精细权限控制,更在于通过模块化设计与详实文档,为大家提供了清晰的技术蓝图与定制自由。</p>
<p><strong>关键词</strong></p>
<p>.NET9、React18、RBAC、权限管理、多租户、PostgreSQL、FreeSql、Ant Design、Vite、Sass/SCSS、独立开发、按钮级权限、数据权限</p>
<h2 id="最后">最后</h2>
<p>如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。</p>
<p>也可以加入微信公众号 社区,与其他热爱技术的同行一起交流心得,共同成长!</p>
<p><img src="https://img2024.cnblogs.com/blog/576536/202505/576536-20250527195524293-1794896295.png" width="50%" loading="lazy" style="display: block; margin-left: auto; margin-right: auto"></p><br><br>
来源:https://www.cnblogs.com/1312mn/p/18974282
頁:
[1]