当前位置: 首页 > news >正文

开源、有文档、能上线的 .NET + Vue 通用权限系统

前言

在日常项目开发中,权限管理几乎是每个系统都绕不开的基础模块。从用户登录、菜单控制到数据隔离,一套稳定、灵活、可扩展的权限体系,往往决定了整个项目的成败。然而,从零开始搭建这样的平台,不仅耗时耗力,还容易在细节上踩坑。

本文推荐一个轻量级但功能完整的 .NET 快速开发框架,采用前后端分离架构,开箱即用,帮大家快速开发通用权限管理系统。

项目介绍

一套基于.NET 和 Vue.js 的全栈权限管理平台。后端采用分层架构设计,前端基于 vue-cli 4.0 脚手架生成,整体结构清晰、职责分明。项目不追求大而全,而是聚焦于"能用、好用、可维护",特别适合中小型项目或需要快速交付的内部系统。不管是新团队启动项目,还是老系统重构,都能提供一个坚实且灵活的起点。

项目功能

  • 用户、角色、部门、岗位、组织五层权限模型,支持复杂的企业架构;

  • 系统功能菜单与按钮级权限配置,实现细粒度访问控制;

  • 数据字典、编码规则、行政区域等基础数据管理;

  • 定时任务可视化配置,基于 Quartz 实现后台调度;

  • 系统日志与调度监测,记录操作行为并以图表形式展示接口调用趋势;

  • 代码生成器,根据数据库表自动生成实体、仓储和基础 CRUD 接口;

  • 报表支持(Grid++Report6)和Excel 导入导出(Magicodes),满足业务报表需求;

  • 应用接入管理,支持多租户或多系统集成场景。

项目框架


项目说明

分层架构

├─ RayD.Core // 框架核心层 ├─ RayD.Repository // 数据仓储层 ├─ RayD.App // 业务应用层(实现具体业务逻辑) ├─ RayD.App.Extra // 应用扩展层(Excel导入导出、定时作业等扩展功能) ├─ RayD.App.Setup // 应用配置层(为 Startup.cs 提供配置方法) ├─ RayD.IMServer // 即时通讯服务 └─ RayD.WebApi // 表现层(Web API 入口启动程序)

核心技术栈

  • Autofac:轻量级 IoC 容器,替代 .NET Core 内置 DI 容器

  • AOP:通过切面实现日志记录、缓存等横切关注点

  • JWT:基于 JWT 的授权认证,支持单点登录与滑动刷新令牌

  • Swagger UI:自动生成并可视化后端 API 接口文档

  • MiniProfiler:对接口性能进行实时可视化分析

  • CORS:提供简洁的跨域资源共享解决方案

  • Quartz.NET:实现定时任务调度

  • Magicodes.IE:支持 Excel 文件的高效导入导出

  • EF Core + Dapper 混合模式:兼顾开发效率与 SQL 灵活性,支持 SQL Server、Oracle、MySQL 等多数据库

  • Grid++Report6:客户端模式报表引擎,用于复杂打印与报表场景

前端项目结构

├─ public/ │ └─ Report/ // Grid++Report6 报表文件存放目录 └─ src/ ├─ api/ // 接口集中管理与封装 ├─ assets/ // 静态资源(图片、字体等) ├─ components/ // 公共组件 ├─ directive/ // 自定义 Vue 指令 ├─ pages/ // 公共页面组件(如登录页、布局页) ├─ plugins/ // 第三方插件配置 ├─ router/ // 路由配置 ├─ store/ // Vuex 状态管理 ├─ styles/ // 全局样式与主题变量 ├─ util/ // 工具函数封装(日期处理、请求拦截等) └─ views/ // 业务视图页面

核心前端依赖

名称

版本

用途说明

axios

0.19.0

封装 HTTP 异步请求

element-ui

2.14.0

基础 UI 组件库

avue

2.6.16

基于 element-ui 的增强组件库,主要用于树形选择器、动态表单等

vxe-table

2.9.12

功能强大的表格组件,支持编辑、分页、虚拟滚动等复杂场景

v-charts

1.19.0

基于 ECharts 的图表组件封装

vuex

3.5.1

全局状态管理

项目使用

环境要求

  • .NET Core SDK

  • Node.js(含 npm)

启动后端服务

1、执行数据库脚本db/rayd_dev.sql初始化数据库;

2、使用 Visual Studio 2019 或更高版本打开back-end/RayD.sln

3、将RayD.WebApi设为启动项目;

4、修改appsettings.json中的数据库连接字符串;

5、按F5运行项目,默认监听端口:9080

启动前端服务

1、使用 VS Code 或其他编辑器打开front-end目录;

2、在终端执行

npm install

3、安装完成后运行

npm run serve

4、前端默认启动端口:8090,浏览器访问http://localhost:8090即可进入系统。

项目代码

Quartz 定时作业

public Task StartAsync(CancellationToken cancellationToken) { //启动定时job,可以在这里配置读取数据库需要启动的任务,然后启动他们 var jobList = _jobService .GetList(null) .Where(c => c.B_EnabledMark == EnabledMark.Enabled && c.B_JobTerminal == AppSettings.JobOption.SubjectTerminal ); foreach (var job in jobList) { var jobBuilderType = typeof(JobBuilder); var method = jobBuilderType.GetMethods().FirstOrDefault( x => x.Name.Equals("Create", StringComparison.OrdinalIgnoreCase) && x.IsGenericMethod && x.GetParameters().Length == 0) ?.MakeGenericMethod(Type.GetType(job.B_JobCall)); var jobBuilder = (JobBuilder)method.Invoke(null, null); IJobDetail jobDetail = jobBuilder.WithIdentity(job.B_Id).Build(); jobDetail.JobDataMap[Define.JOBMAPKEY] = job.B_Id; //传递job信息 ITrigger trigger = TriggerBuilder.Create() .WithCronSchedule(job.B_Cron) .WithIdentity(job.B_Id) .StartNow() .Build(); _scheduler.ScheduleJob(jobDetail, trigger); } _scheduler.Start(); return Task.CompletedTask; } public Task StopAsync(CancellationToken cancellationToken) { _scheduler.Shutdown(); _logger.LogInformation("关闭定时job"); return Task.CompletedTask; }

项目接口文档

项目效果

用户登录后,菜单和按钮根据权限动态加载;操作日志实时记录;定时任务可启停、可监控;代码生成器几分钟内即可产出单表增删改查页面。尤其适合政府、教育、制造等对权限模型有明确层级要求的行业。

系统登录

系统首页

敏捷开发

系统管理

组织架构

定时任务

组件示例

系统日志

项目源码

项目完全开源,结构规范,注释完整。所有核心功能均有对应代码说明,学习和二次开发门槛极低。

Gitee:https://gitee.com/ld13750018815/rayd

总结

一个经过实战打磨的开发脚手架。它把权限管理中最繁琐、最易错的部分封装好,让大家能把精力集中在真正的业务逻辑上。对于需要快速交付、又不想牺牲代码质量的团队来说,它是一个非常实用的选择。如果大家正在找一个"开源、有文档、能上线"的 .NET + Vue 权限平台,可以试试这个项目。

http://www.jsqmd.com/news/825788/

相关文章:

  • 从.bib文件到完美引用:手把手教你用LaTeX管理IEEE论文参考文献(含TeXworks操作)
  • AI智能体工具化实战:基于MCP协议扩展智能体能力
  • 非科班也能转行网络安全!轻松拿下 25K 月薪✅
  • Stakpak/Paks:声明式云原生应用打包与跨平台部署实践
  • Arm Cortex-A78处理器仿真技术与Iris架构实践
  • 3步掌握ComfyUI-Inpaint-CropAndStitch:局部AI图像修复的终极解决方案
  • Rust构建的轻量级文件搜索工具fltr:高性能文本检索新选择
  • 代码意图理解与氛围翻译:从AST到语义的智能代码分析实践
  • AI结对编程实战:基于Cursor与Django的高效全栈开发指南
  • Zeek日志AI分析平台:从网络监控到智能威胁检测的架构与实践
  • 危化园区 ReID 跨镜管控难,镜像视界无感定位筑牢安全防线
  • 浮点数在计算机中存储格式详解
  • FigDraw 10. SCI 论文图表进阶:直方图与核密度图的组合艺术
  • 深入了解浮点数在计算机中的存储方式和运算
  • 2026年5月金华电缆桥架实力厂家新观察:为何宁波浩华电力设备有限公司备受瞩目? - 2026年企业推荐榜
  • 基于Tauri与React构建现代化跨平台文件管理器
  • 【AI前沿】生产级 Prompt 解剖:CL4R1T4S 24 家厂商横向对比
  • 在职场上,别人对你的态度,都是你允许的:“他为什么敢这样对我?”“他为什么不怕得罪我?”“我有什么好怕的?”
  • 零中频接收机技术演进与动态范围优化方案
  • 数据清洗实战:解锁混乱数据,构建高效企业集成管道
  • 中科曙光高端存储,已经准备好接受AI时代的新考验
  • TLM通信:从基础操作到UVM高级连接模式
  • 突然想写一些东西
  • 量子启发式算法优化车联网通信与交通控制
  • DeepSeek LDAP同步延迟从15分钟压缩至800ms:基于增量Sync+Change Notification机制的深度调优实录
  • Synology API v0.8架构重构:企业级NAS自动化管理Python SDK深度解析
  • LDAP认证失败率下降92%!DeepSeek集成最佳实践,含OpenLDAP/Active Directory双环境配置清单
  • Shor算法量子电路优化:减少空闲时间的设计策略
  • Wonder3D完整指南:如何用AI将单张图片快速生成高质量3D模型
  • ARMv8系统寄存器详解与L2MERRSR_EL1应用