『7x24小时有问必答』

前言

在日常项目开发中,权限管理几乎是每个系统都绕不开的基础模块。从用户登录、菜单控制到数据隔离,一套稳定、灵活、可扩展的权限体系,往往决定了整个项目的成败。然而,从零开始搭建这样的平台,不仅耗时耗力,还容易在细节上踩坑。
本文推荐一个轻量级但功能完整的 .NET 快速开发框架,采用前后端分离架构,开箱即用,帮大家快速开发通用权限管理系统。

项目介绍

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

项目功能

用户、角色、部门、岗位、组织五层权限模型,支持复杂的企业架构;
系统功能菜单与按钮级权限配置,实现细粒度访问控制;
数据字典、编码规则、行政区域等基础数据管理;
定时任务可视化配置,基于 Quartz 实现后台调度;
系统日志与调度监测,记录操作行为并以图表形式展示接口调用趋势;
代码生成器,根据数据库表自动生成实体、仓储和基础 CRUD 接口;
报表支持(Grid++Report6)和  Excel 导入导出(Magicodes),满足业务报表需求;
应用接入管理,支持多租户或多系统集成场景。

项目框架

1.webp

项目说明

分层架构

├─ 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;

}

项目接口文档

2.webp

项目效果

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

5.webp
敏捷开发
6.webp
系统管理
7.webp
组织架构
8.webp

9.webp
定时任务
10.webp
组件示例
11.webp
系统日志
12.webp

项目源码

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

总结

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

关键词

最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。也可以加入微信公众号[DotNet技术匠]  社区,与其他热爱技术的同行一起交流心得,共同成长!
作者:小码编匠
出处:gitee.com/smallcore/DotNetCore
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!

END

方便大家交流、资源共享和共同成长
纯技术交流群,需要加入的小伙伴请扫码,并备注加群

推荐阅读

觉得有收获?不妨分享让更多人受益
关注「DotNet技术匠」,共同提升技术实力

收藏
点赞
分享
在看

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码