Vue3+NestJS实现后台权限管理系统上线啦!(附源码及教程)

开发 前端
最近这段时间工作不忙,想着提升一下自己的技术,沉淀沉淀。于是做了一个开源的后台权限管理系统。本篇文章为大家介绍一下这个开源全栈后台管理系统。

最近这段时间工作不忙,想着提升一下自己的技术,沉淀沉淀。于是做了一个开源的后台权限管理系统。因为我本身是一个前端开发,所以前端和服务端都是用的 JS 语言来开发的,前端用的框架是 vue3,后端则用的是 NestJS。经过一段时间的努力,最终于元旦节部署了第一个版本。

本篇文章为大家介绍一下这个开源全栈后台管理系统。

项目演示

项目 git 地址[1]

项目演示地址[2]

部分页面截图:

  • 角色管理

图片

  • 菜单管理 图片
  • 用户管理 图片
  • 日志 图片
  • 个人中心

图片

项目技术栈

前端部分主要技术栈:

  • 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来控制当前用户是否有权限操作某个按钮。比如下面这个按钮,只有当前用户有system:menu:add权限时,才会显示。

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

而对应的后端接口Controller部分则需要通过一个自定义装饰器Permissions定义这个接口需要的权限

//新增菜单
  @Post('createMenu')
  @Permissions('system:menu:add')
  async createMenu(
    @Request() req,
    @Body()
    createMenuDto: CreateMenuDto,
  ) {


    return await this.menuService.createMenu(req, createMenuDto);
  }
  • 动态路由获取

在前端 Vue 项目中,当用户登录成功后,会根据用户的角色获取到对应的路由菜单配置,然后动态生成路由。

部分代码展示:

图片

其中获取到的路由已经是后端处理好的, 后端部分代码展示

图片

前端获取的数据结构:

图片

  • Excel 导入导出

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

图片

  • 分页数据查询

部分代码展示:

图片

前端获取的数据结构:

图片

  • 自动部署

自动部署我们使用了GitHub Actions,当我们提交代码到GitHub后,会自动触发GitHub Actions的工作流,然后会自动部署到阿里云服务器上。

部分代码配置如下:

图片

当然功能还不止这些, 由于篇幅原因, 这里就不一一介绍了。相关完整教程也已经写完了,感兴趣可以去看看。如果有什么问题,欢迎留言。

同时项目还有很多没有完善的地方,后续会继续完善,争取打造一个以前端开发者为中心的全栈后台权限管理系统!

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

标注地址

[1] https://github.com/qddidi/fs-admin

[2] http://fsadmin.xyz/#/


责任编辑:庞桂玉 来源: web前端进阶
相关推荐

2022-02-16 08:45:55

Vue-Router权限管理系统权限验证

2025-01-03 09:34:54

2017-07-11 09:21:40

quartzshiro权限框架

2020-06-09 11:35:30

Vue 3响应式前端

2011-09-09 16:38:51

Android Wid源码

2022-02-10 10:10:03

数据库表权限表数据库操作

2023-11-24 08:02:28

2023-11-15 17:31:34

2017-03-20 19:01:20

Linux管理员系统用户

2021-11-18 10:28:03

鸿蒙HarmonyOS应用

2024-05-06 08:48:18

nestjava​MVC​

2024-03-29 09:07:15

Vue3.0开源项目

2024-08-19 09:25:42

2013-07-23 07:03:51

Android开发学习Gallery实现3DAndroid源码下载

2021-09-22 07:57:23

Vue3 插件Vue应用

2015-09-08 09:30:40

2022-06-26 00:00:02

Vue3响应式系统

2023-11-28 09:03:59

Vue.jsJavaScript

2011-08-22 14:02:04

速途网新闻周刊

2021-01-12 15:54:03

Vue开发管理系统
点赞
收藏

51CTO技术栈公众号