Skip to content

NestJs CRUD for RESTful API使用nestjs+mysql+typeorm+jwt+swagger企业项目中的RBAC权限管理、实现单地方登录。

Notifications You must be signed in to change notification settings

kuangshp/nestjs-mysql-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4c7046b · Oct 22, 2023

History

40 Commits
Oct 3, 2023
Oct 22, 2023
Oct 3, 2023
Oct 3, 2023
Oct 3, 2023
Oct 3, 2023
Oct 7, 2023
Oct 3, 2023
Oct 18, 2023
Oct 8, 2023
Oct 3, 2023
Oct 3, 2023
Oct 3, 2023
Oct 7, 2023
Oct 3, 2023
Oct 19, 2023
Oct 22, 2023
Oct 8, 2023
Oct 8, 2023
Oct 3, 2023
Oct 7, 2023
Oct 8, 2023
Oct 7, 2023

Repository files navigation

一、项目介绍

  • 1、项目前端采用vue3开发的。前端项目地址
  • 2、采用angular模块化开发方式来构建项目,如果你想用javamvc方式来开发nestjs项目你可以查看v1分支。
  • 3、项目是基于mysql数据库,项目中全部采用typeorm来操作数据库,弱化了原生sql,避免前端的小伙伴没有sql基础。
  • 4、实现用户名、手机号码、邮箱任一的方式实现登录。
  • 5、使用自定义token的方式进行登录鉴权,采用自定义装饰器结合守卫来实现对接口鉴权拦截访问。
  • 6、实现同一时间只能一个地方登录
  • 7、如果你要演示菜单权限和接口权限,请自己创建账号、角色、分配菜单和接口权限。
  • 8、使用winston做日志管理,并且根据小时来拆分日志
  • 9、自定义装饰器实现对接口权限收集,如果这个接口要给角色分配权限的时候就直接加上装饰器,会自动在数据库生成数据

二、使用项目

  • 1、本项目仅仅是实现了rbac的权限系统,对于其他的功能需要自己基于这个基础上去扩展

  • 2、先在本地创建数据库

  • 3、在项目的根目录的.env文件修改为你自己的数据库基本配置(地址、用户名、密码、数据库)

    DB_HOST=localhost
    DB_USERNAME=root
    DB_PASSWORD=123456
    DB_DATABASE=nestjs-mysql
  • 4、安装依赖包

  • 5、启动项目

    npm run start:dev
  • 5、运行项目会自动初始化菜单数据和用户数据(账号:admin,密码:123456)

  • 6、如果你想初始化别的数据,可以在src/services/init-db中写上你要初始化的数据

二、主要实现功能

  • 实现用户的登录、登录鉴权、多点登录限制、菜单权限、接口权限

  • 基于RBAC实现权限控制

  • 集成swagger文档

  • ecosystem.config.js是采用PM2的配置文件,项目开发完后直接运行命令一键部署

    npm run build
    # 开发环境
    npm run pm2:dev
    # 生产环境
    npm run pm2:prod
  • winston日志系统根据小时来划分日志管理,如果要实时查看日志,直接使用PM2查看日志

    pm2 log
  • 自定义装饰器,被装饰器装饰的接口会自动进行入库操作

三、技术解答

本项目还在持续集成新功能进来,最后会加上前端做一个cms系统的api,后期会拉分支使用graphql提供api

  • 1、有关于nestjs的技术问题或索要关于nestjs的电子书可以直接加我微信加入技术交流群(微信号:332904234)备注:nest 开发

  • 2、如果你觉得本项目对你帮助很大,给一个赞

  • 3、最近正在搞Nestjs微服务训练营,训练营后打算重构一版

About

NestJs CRUD for RESTful API使用nestjs+mysql+typeorm+jwt+swagger企业项目中的RBAC权限管理、实现单地方登录。

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published