最近这段时间工作不忙,想着提升一下自己的技术,沉淀沉淀。于是做了一个开源的后台权限管理系统。因为我本身是一个前端开发,所以前端和服务端都是用的 JS 语言来开发的,前端用的框架是 vue3,后端则用的是 NestJS。经过一段时间的努力,最终于元旦节部署了第一个版本。为了让更多同学参与学习,我直接把前后端所有代码 全部开源 !不仅如此,开发过程中相关完整文字教程也都整理好了,感兴趣的朋友可以去看看。完整教程

本篇文章为大家介绍一下这个开源全栈后台管理系统,如果对大家有所帮助,欢迎点赞收藏!

项目演示

项目 git 地址

项目演示地址

部分页面截图:

  • 角色管理

  • 菜单管理

  • 用户管理

  • 日志

  • 个人中心

项目技术栈

前端部分主要技术栈:

  • vue3
  • element-plus
  • pinia
  • tailwindcss
  • TypeScript
  • Vite

后端部分主要技术栈:

  • NestJS
  • TypeScript
  • MySQL
  • TypeORM
  • JWT
  • Redis
  • Swagger

部署部分主要技术栈:

  • Docker
  • nginx
  • githb actions

项目功能

项目功能主要包括:

  • JWT 实现用户登录
  • Swagger 在线接口文档
  • 基于 RBAC 权限管理
  • 动态路由获取
  • 面包屑导航
  • 自定义权限指令
  • 菜单管理
  • 角色管理
  • 用户管理
  • 日志管理
  • Excel 导入导出
  • 个人中心
  • docker+github actions 一键自动部署阿里云

项目介绍

由于篇幅有限,这里简单介绍一些核心功能。

  • 返回结果统一封装

项目中所有的接口返回结果都封装成统一的格式,方便前端处理。后端通过拦截器实现返回结果的统一处理。

前端拿到的结果如下

  • 业务异常信息处理

当请求出现业务异常时,会返回统一的错误信息。后端封装代码如下:

当我们想抛出业务异常时,只需要调用一下即可,比如密码错误throw new ApiException('密码错误', ApiErrorCode.PASSWORD_ERR);

此时前端拿到的结果如下

  • Swagger 在线接口文档

项目集成了Swagger,只需在后端Controller中添加装饰器,即可生成在线接口文档。

直接打开http://localhost:3000/fs_admin/api#/即可查看

  • 自定义权限指令

在前端Vue项目中,可以使用自定义指令v-hasPerm来控制用户是否有权限操作某个按钮。例如:

 <el-button
type="primary"
v-hasPerm="['system:menu:add']"
plain
icon="Plus"
@click="handleAdd()"
>新增</el-button
>

后端接口通过自定义装饰器@Permissions定义所需的权限:

 //新增菜单
@Post('createMenu')
@Permissions('system:menu:add')
async createMenu(
@Request() req,
@Body()
createMenuDto: CreateMenuDto,
) { return await this.menuService.createMenu(req, createMenuDto);
}
  • 动态路由获取

用户登录成功后,前端会根据用户的角色动态生成路由菜单。后端处理好的路由数据结构如下:

Excel 导入导出功能使用了xlsx库,后端代码如下:

前端获取的数据结构:

  • Excel 导入导出

Excel 导入导出功能主要用到了xlsx库。后端部分代码展示:

  • 分页数据查询

部分代码展示:

前端获取的数据结构:

  • 自动部署

自动部署通过GitHub Actions实现,提交代码后会自动触发工作流,部署到阿里云服务器。

GitHub Actions配置:

当然,项目功能远不止这些,由于篇幅限制,这里就不一一介绍了。完整的教程已经整理完毕,感兴趣的朋友可以查看。如果有什么问题,欢迎留言讨论。

同未来,我还会继续完善这个项目,争取打造一个以前端开发者为中心的全栈后台权限管理系统!

Any application that can be written in JavaScript, will eventually be written in JavaScript‌

Vue3+NestJS实现后台权限管理系统上线啦!(附源码及教程)的更多相关文章

  1. MVC + EF + Bootstrap 2 权限管理系统入门级(附源码)

    MVC .EF 学习有大半年了,用的还不是很熟练,正好以做这样一个简单的权限管理系统作为学习的切入点,还是非常合适的. 开发环境: VS 2013 + Git + MVC 5 + EF 6 Code ...

  2. asp.net MVC通用权限管理系统-响应式布局-源码

    一.Angel工作室简单通用权限系统简介 AngelRM(Asp.net MVC Web api)是基于asp.net(C#)MVC+前端bootstrap+ztree+lodash+jquery技术 ...

  3. 一个开源的C#和cefsharp项目:逐浪字体大师pc版上线(附源码开源)

    z01逐浪字体大师,是一款基于C#和web引擎开发的字体设计软件,可以打开直接写字,也可以链接官方资源 ,附Github开源库,欢迎大家下载.客户端技术是基于wpf设计的,整个界面精美,与逐浪CMS技 ...

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

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

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

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

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

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

  7. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码]

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码] 文件上传这东西说到底有时候很痛,原来的asp.net服务器 ...

  8. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(6)-Unity 2.x依赖注入by运行时注入[附源码]

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(6)-Unity 2.x依赖注入by运行时注入[附源码] Unity 2.x依赖注入(控制反转)IOC,对 ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码]

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码] 开始,我们有了一系列的解决方案,我们将动手搭建新系统吧. 用 ...

  10. Ext.NET 4.1 系统框架的搭建(后台) 附源码

    Ext.NET 4.1 系统框架的搭建(后台) 附源码 代码运行环境:.net 4.5  VS2013 (代码可直接编译运行) 预览图: 分析图: 上面系统的构建包括三块区域:North.West和C ...

随机推荐

  1. 2024御网杯信息安全大赛个人赛wp_2024-11-27

    MISC题解 题目附件以及工具链接: 通过网盘分享的文件:御网杯附件 链接: https://pan.baidu.com/s/1LNA6Xz6eZodSV0Io9jGSZg 提取码: jay1 --来 ...

  2. MiniTomcat 系列:第一章:解锁实现基础 HTTP 服务器的奥秘

    第一步:实现基础 HTTP 服务器 在这一章中,我们将从零开始编写一个简单的 HTTP 服务器.这个服务器的基本功能是监听一个端口,接收来自客户端的 HTTP 请求,并返回一个 HTTP 响应.我们将 ...

  3. 基于.NET8+Vue3开发的权限管理&个人博客系统

    前言 今天大姚给大家分享一个基于.NET8+Vue3开发的权限管理&个人博客系统:Easy.Admin. 项目介绍 Easy.Admin是一个基于.NET8+Vue3+TypeScript开发 ...

  4. Gitlab误删用户导致项目丢失莫慌

    Gitlab让小朋友不小心把离职员工的账号给删了,可是离职员工有好几个项目都是他是owner,造成Gitlab上项目全部丢失. 遇到这种情况,莫慌. 一般,本地都有完整的Git备份,离职员工走了,肯定 ...

  5. Android 12 适配之 "Android:exported"

    Android 12 适配之 "Android:exported" 将 build.gradle 中的 targetSDKVersion 和 compileSdkVersion 改 ...

  6. Flutter之GetX之Obs

    Flutter之GetX之Obs 除了之前说过的GetBuilder,GetX还有其他的状态管理方式 一个后缀就可以把一个变量变得可观察,变量每次改变的时候,使用它的小部件就会被更新 var name ...

  7. Linux系统部署FineReport

    1. 概述 1.1 应用场景 帆软提供 Linux 操作系统下可直接安装使用的 FineReport 设计器,满足不同系统的用户的操作需求. 支持中标麒麟.银河麒麟.UOS 的 Linux 操作系统 ...

  8. [双体系练习]Java基础易错点

    toCharArray()和split()的区别. toCharArray() 这个方法将一个字符串转换成一个字符数组.每个字符都会成为数组中的一个元素. 返回值:一个包含字符串中所有字符的char数 ...

  9. TB交易开拓者_趋势跟踪策略_多品种对冲_递进优化回测_A0001188020期货量化策略

    如果您需要代写技术指标公式, 请联系我. 龙哥QQ:591438821 龙哥微信:Long622889 也可以把您的通达信,文华技术指标改成TB交易开拓者的自动交易量化策略. 众所周知,投资界有基本面 ...

  10. 盘点5个常用的.Net依赖注入框架!

    盘点5个常用的依赖注入框架,特别是前面2个. 1.Microsoft.Extensions.DependencyInjection 这是.Net Core框架本身内置集成的,我们只需引入Microso ...