前言

在数字化转型浪潮中,高效且安全的权限管理是后台系统的核心基石。传统方案或依赖臃肿的三方框架,或难以满足细粒度权限需求。

今天推荐一款完全独立开发、基于前沿技术栈开发的RBAC权限系统。它摒弃了现成Admin框架的束缚,以 ".NET 9 + React 18" 双引擎驱动,深度融合按钮级权限与数据权限控制,并原生支持多租户架构,为开发者与企业提供高可控性、易扩展的后台管理基座。

项目介绍

风汐管理系统一款开源的通用后台权限解决方案,由作者独立设计并实现,未使用任何第三方Admin框架。

其核心目标是为个人开发与企业提供一套高效、美观、易上手的管理系统基座。系统深度集成RBAC(基于角色的访问控制)模型,支持细粒度的按钮操作权限与数据范围权限,并内置多租户隔离机制,满足SaaS化部署需求。

项目采用严格挑选的稳定技术栈(.NET 9 + React 18),确保代码具有优秀的扩展性、可维护性与快速定制能力,在为.NET + React 技术生态贡献高质量实践范例。

项目功能

风汐管理系统提供丰富的功能模块,涵盖了从用户认证到权限管理的各个方面:

角色管理:支持创建、编辑和删除角色,分配权限。

权限管理:提供细粒度的权限控制,支持按钮级别和数据级别权限。

菜单管理:允许管理员自定义系统菜单,配置显示顺序。

日志管理:记录用户的操作日志,便于审计和问题排查。

系统监控:查看在线用户,确保信息传达及时。

多租户支持:每个租户拥有独立的数据存储,互不影响。

项目特点

1、支持多租户:每个租户的数据相互隔离,确保数据安全。

2、按钮级别权限控制:精确控制用户对页面元素的操作权限。

3、简洁高效的用户界面:采用现代化设计语言,提升用户体验。

4、模块化的系统架构:各功能模块独立开发,便于维护和扩展。

5、可读性高代码结构:代码编写遵循最佳实践,易于理解和修改。

项目技术

风汐管理系统的技术栈选用了当前最为前沿和稳定的工具与框架,具体包括:

  • .NET Core:作为后端开发的基础框架,提供了强大的性能和安全性。

  • PostgreSQL:作为数据库管理系统,支持复杂查询和大数据量处理。

  • FreeSql:用于简化数据库操作,提供ORM支持。

  • Aop:面向切面编程,用于实现横切关注点的分离。

  • Redis:用于缓存和会话管理,提高系统响应速度。

  • EventBus:事件总线机制,方便异步通信和解耦。

  • AutoMapper:对象映射工具,简化数据转换过程。

  • Serilog:日志记录库,支持多种输出方式。

  • React:前端开发框架,支持组件化开发。

  • Ant Design:UI组件库,提供丰富的组件和样式。

  • Vite:前端构建工具,优化开发体验和生产性能。

  • Sass/SCSS:CSS预处理器,增强样式的复用性和可维护性。

项目代码

1、服务自动注册

实现了注册接口

实现ISingletonDependency将以单例注入

public interface ISingletonDependency
{
}

实现ITransientDependency将以瞬时注入

public interface ITransientDependency
{
}

实现IScopedDependency将以作用域注入

public interface IScopedDependency
{
}

类上标记依赖注入DenpendencyInjectAttribute

/// <summary>
/// 自动注入,标记此特性的类会被自动注册到依赖注入容器中 <br/>
/// 如果AsSelf为false且Interfaces为空,则不会注册
/// </summary>
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
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; }
}

2、当前租户

public interface ICurrentTenant
{
string? TenantId { get; }
}

注入ICurrentTenant接口,在启用多租户功能时,并且请求头中含X-Tenant时;多租户中间件会自动解析X-Tenant的值到TenantId

3、如何启用多租户

在MultiTenancyConsts.cs文件中将IsEnabled改为false

public static class MultiTenancyConsts
{
/// <summary>
/// 是否启用多租户(不做成配置,常量硬编码更好)
/// </summary>
public const bool IsEnabled = true;
}

为什么使用作者常量硬编码更好?因为一个系统从开始就必须考虑好是否需要多租户模式。

项目预览

1、在线预览地址:https://crackerwork.cn

2、预览账号admin/123qwe* (请注意,预览模式下屏蔽了非GET请求,仅供查看演示)

3、项目文档

项目效果

系统通过简洁高效的用户界面和强大的功能模块,极大地提升了用户的操作体验。

以下是部分系统截图展示:

1、系统登录

2、系统首页

3、组织架构

4、系统管理

5、数据字典

6、系统监控

项目源码

GitHub: https://github.com/fancyxnet/fancyx-admin

Gitee: https://gitee.com/fancyxnet/fancyx-admin

大家可以通过克隆仓库获取源码,并根据自己的需求进行二次开发或定制化修改。

总结

风汐管理系统(fancyx-admin)代表了.NET全栈开发的深度实践。它以完全独立开发之姿,融合.NET 9的高性能与React 18的现代化交互,打造出一套功能完备(RBAC+多租户)、体验卓越、扩展自由的权限管理基座。

其核心价值不仅在于提供按钮级与数据级的精细权限控制,更在于通过模块化设计与详实文档,为大家提供了清晰的技术蓝图与定制自由。

关键词

.NET9、React18、RBAC、权限管理、多租户、PostgreSQL、FreeSql、Ant Design、Vite、Sass/SCSS、独立开发、按钮级权限、数据权限

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。

也可以加入微信公众号[DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

.NET 9 + React 开发的企业级后台权限管理系统,文档齐全,轻松上手的更多相关文章

  1. 用GO写一个后台权限管理系统

    最近用GO写了一个后台权限管理系统,在WIN10和ubuntu下部署,在win系统下编译ububtu的部署文件要先做如下配置 set GOARCH=amd64 set GOOS=linux go bu ...

  2. node实现后台权限管理系统

    本文面向的是node初学者,目标是搭建一个基础的后台权限系统.使用的node框架是上手最简单的express,模板是ejs,这些在node入门的书籍中都有介绍说明,所以应该是难度较低的. 对于node ...

  3. web全栈后台权限管理系统(VUE+ElementUi+nodeJs+koa2)

    web全栈后台权限管理系统(VUE+ElementUi+nodeJs+koa2) 主要技术 前端 vue 全家桶 ElementUI 后端 Node.js Koa2 Mongoess 数据库 mong ...

  4. 电商管理后台 API 接口文档

    1. 电商管理后台 API 接口文档 1.1. API V1 接口说明 接口基准地址:http://127.0.0.1:8888/api/private/v1/ 服务端已开启 CORS 跨域支持 AP ...

  5. AppleWatch开发教程之调试程序使用帮助文档

    AppleWatch开发教程之调试程序使用帮助文档 AppleWatch开发教程之调试程序 调试又被称为排错,是发现和减少程序错误的一个过程.在Xcode中进行调试的需要实现以下几个步骤: 1.添加断 ...

  6. Java 后台创建word 文档

    ---恢复内容开始--- Java 后台创建 word 文档 自己总结  网上查阅的文档 分享POI 教程地址:http://www.tuicool.com/articles/emqaEf6 方式一. ...

  7. 后台生成EXCEL文档,自定义列

    后台生成EXCEL文档,自定义列 //response输出流处理 //设置编码.类型.文件名 getResponse().reset(); getResponse().setCharacterEnco ...

  8. 可以搜索到DedeCms后台文章列表文档id吗?或者快速定位id编辑文章

    我们在建站时有的时候发现之前的文章有错误了,要进行修改,但又不知道文章名,只知道大概的文章id,那么可以搜索到DedeCms后台文章列表文档id吗?或者快速定位文章id方便修改? 第一种方法:复制下面 ...

  9. 【毕业设计】基于Android的家校互动平台开发(内含完整代码和所有文档)——爱吖校推(你关注的,我们才推)

    ☆ 写在前面 之前答应大家的毕业答辩之后把所有文档贡献出来,现在答辩已过,LZ信守承诺,把所有文档开源到了GitHub(这个地址包含所有的代码和文档以及PPT,外层为简单的代码).还望喜欢的朋友们,不 ...

  10. PSP个人软件开发系统面向对象需求分析与设计文档

    1.引言 1.1编写的目的 编写该文档的目的是,对产品进行定义,详尽说明该产品的软件需求,简述我们对 PSP个人软件开发系统的初步设想,及划分的各功能模块以及各模块的实体图和数据流图. 1.2预期的读 ...

随机推荐

  1. Hyperledger Fabric - 链码部署

    前提条件 启动测试网络 ./network-myself.sh up 创建通道 ./network-myself.sh createChannel 智能合约(链码) pom.xml文件 配置远程仓库 ...

  2. TCP延迟调优之PSH参数与passt延迟问题修复

    qemu中使用passt来作为虚拟机的网卡NAT实现,希望能够利用它IP地址与host一致的优点.这本来是没有啥问题的,但是不知道为什么它的TCP入口流量的延迟很严重. 好吧,反正以后总是要改pass ...

  3. 自动驾驶 | 为CarLA添加一辆小米SU7 Part I

    自动驾驶 | 为CarLA添加一辆小米SU7 Part I 导言 什么是CarLA? CarLA是一款基于虚幻引擎4(Unreal Engine 4)构建的开源自动驾驶仿真平台,为自动驾驶算法的研发. ...

  4. 应对海量数据挑战,如何基于Euro NCAP标准开展高效智驾测试与评估?

    一.前言 随着自动驾驶技术的快速发展,庞大的测试数据和复杂的场景需求为性能与安全评估带来了巨大挑战.如何高效管理海量数据.挖掘关键场景,并满足以Euro NCAP(European New Car A ...

  5. 在 .NET 中的 ConvertAll 和 Select 方法哪个性能好

    .NET 的 List 中提供了 ConvertAll 和 Select 两个方法,在开发中实际上应该使用哪一个? 接下来通过基准测试脚本来对比性能. 先编写基准测试脚本: [MemoryDiagno ...

  6. JDK、tomcat、MySQL安装部署

    大数据开发实战 计算机基础普及 [计算机基础与网络.1](动态主机配置协议 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 是 RFC 1541( ...

  7. 安卓逆向学习及APK抓包(一)【Kali】安装 Scrcpy 进行手机投屏

    00X00 前言 官方给出的安装方式apt install scrcpy,但是经过各种换源操作啥的依然报错 ┌──(root㉿kali)-[~/桌面] └─# apt install scrcpy 正 ...

  8. Web前端入门第 44 问:CSS 循环动画 animation 效果演示

    相关属性 @keyframes 定义动画的关键帧序列 animation-name 指定 @keyframes 动画的名称 animation-duration 动画单次循环的持续时间(必需属性,否则 ...

  9. 【ROS】1.1 ROS基本命令介绍

    原视频 ROS基本命令 右键新标签页查看大图! have to do Command Command Result 中文解释 图示 roscore Open the core of the ROS. ...

  10. C#中无法将文件”obj\debug\XXX.dll复制到“bin\Debug\XXX.dll” 拒绝访问

    较为方便有效的方法就是,把项目属性中的"应用程序集"的"程序集名称"修改为另一个名称即可.