Shu-How Zの小窝

Loading...

Node.js框架之NestJS从入门到实战必学从入门到实战必学教程

Node.js框架之NestJS从入门到实战必学从入门到实战必学教程

https://www.bilibili.com/video/BV1btU7YtE5M 4 8

2024

1-1课程介绍

imooc
bilibil
一手:666java.com
如今的前端变得复杂
第一阶段
HTML
CSS
JS
第二阶段
JQuery
Bootstrap
第三阶段
Augular
Vue
React
第四阶段
大型SPA
复杂前后
端项目

S
Nestjs
Spring系列
Django
Gin
Node.js
JDK
Python 2.x 3.x
Go 1.x

与产品、后端沟通
更顺畅
参与全栈项目的开发
更灵活
自己写Mock、测试
更方便

专业国际 专业设计

丰富的后端世界
接口安全
先进的架构
接口性能
不错的性能
服务端技术
前后端打通构建复杂应用
数据库设计

Node.js很多都需要自己来考虑的技术栈更多需要很多的积累
Nestjs开箱即用,成本低架构完善易扩展,稳定性也好丰富生态,技术成型

阿里开发双11前端大规模Node.js应用,阿里云微服务Nestjs应用腾讯视频Node.js支撑国庆阅兵直播高并发,腾讯云支持Nestjs携程、转转、百度、京东等公司都有让前端->服务端开发

带你从前端到后端迈向全栈开发
学习后端经典概念、OOP、FP、AOP后端编程思想
遵循后端逻辑设计与前后端分离模式开发

基于常用前端技术栈,搭建通用后端业务框架的前端页面前速功能模块
U相件库
JavaScript框架
路由
状态管理
Bootstrap 5x Vue.js 3x vue-router4.x pinia 2x登录模块
管理后台首页
CSS 预编译
开发环境
请求库
Scss/Sass Vite 3.x axios菜单页面
添加与管理详情页面发送请求:/api/vt/
/api/vt/login前后端分离,使用JWT技术方便在路平台同络口共享
/api/v1/users接口作 Express/高并发膚taett集成精口安全:请求系师/安全头/CORS运用 NestJS 功能模块,搭建通用后端业务框架通用后端接口
核心库
配置模块日志模块
蓄校
Nestjs 9x
@nestjs/contg Pino/winstonpassport/jwt配置模块日志模块
数据库ORM Web服务
用户模块登录模块
TypeORM Express/fastify UsersModule AuthModule e20测试
接口文档菜单模块角色模块
数据库模块
Jost/pactum swagger MenusModuleRolesModule功能模块
鉴权/用户/C单/权限

必备核心技能一网打尽
Node.js基础
与开发环境搭建
Node.js环境
包管理器npm/yarn/pnpm
调试技巧
Typescript
Nestjs官方CLI
nvm版本管理
nrm与淘宝源
Vscode插件
插件配置与同步
Docker开发环境
核心功能
通用业务框架
对比Koa/express/eggjs
后端开发流程
OOP/FP编程
AOP/DI是什么
Nestjs架构
日志收集
配置库方案
数据校验
数据持久化 mongoDB/MySQL
ORM库TypeORM
序列化
错误处理
RESTful API规范
CURD实现
中间件
拦截器
守卫
数据库设计
接口安全
Web服务开发
JWT鉴权
数据校验
接口性能优化
Nestjs生命周期
接口测试
前端项目搭建
单元/集成测试
Linux服务器
数据库
前后端项目打包
项目部署
PM2守护进程
测试与运维
Jest/pactum
Nginx反向代理
域名解析
Dockerfile打包镜像

1-2什么是nestjs?应用场景是什么?

Nest提供了一个开箱即用的应用程序架构,允许开发人员和团队创建高度可测试,可扩展,松散耦合且易于维护的应用程序。

docs.nestjs.cn/9/awesome

b Nestjs应用场景
从技术层面上,复杂项目(长期+多子系统)推荐使用从人力资源层面上,如果中级前端的人数>后端人数可以考虑

简单的接口Mock-> Postman,json-server,mock.js

单体项目接口数量比较少2、30个左右,没有性能要求;长期项目、微服务架构(多个子模块)及考虑扩展的使用Nestjs

聊天室、爬虫等高并发的应用(同时对CPU密集不敏感)
缺少后端但需要快速上线的项目
Serverless及前后端一体化的项目,CLI及中间层等

中高级前端的招聘
一线城市,3-5年工作经验,20-30k不等(更高的是期权+股票)二三线城市,3-5年工作经验,8-15k不等,大厂可以到20k前端同学的应用面更广,一个优秀的前端可以做的事比较多

1-3常见问题对比koa&eggjs&expr

Express
稳定+生态
Fastify
性能为王

横向对比结果
一手:
Koa&Express本身只实现了HTTP服务,中间逻辑需自己实现
Egg.js有合理的逻辑分层,但TS支持不好,文档欠缺
Nest.js生态最好,使用TS+注解的方式更便捷

数据库:容器化Docker+docker-compose快速启动本地数据库

bilibil
服务端学的好累
一手:666java.com
nginx
SpringBoot
数据库
ES
Linux
Redis
分布式
连接池Druid
Dubbo
容器化
log4j2
SQL
MyBatis
负载均衡
设计模式
服务端技术
消息队列
RabbitMQ
Swagger
MVC
云服务器
Cookie
OSS
AOP
Lambda表达式
面向对象
SpringCloud
网关
Zuul
Zookeeper
集群架构
Kubernetes
JWT
微服务
Kafka日志收集
配置中心
JDBC
性能优化
容错Hystrix
服务通信Fegin
多租户
Docker
www.imooc.com
慕课网
一手:666java.com
服务端开发流程
项目需求
需求文档
技术栈选型
环境准备
功能模块
接口开发
数据库
性能要求
版本控制
接口测试
测试用例
压力测试
缺陷控制
接口文档
上线部署
自动化流程 多环境部署
灰度更新
日志收集

2-1常见服务端开发流程是什么?哪些核心的技术点?
2-2前端息息相关的Nodejs版本介绍

front-end.toimc.com/notes-page/basic/node/#什么是-node-js

2-3Node.js版本管理工具nvm不能太好用
2-4包管理工具使用cnpm&yarn&pnp
2-6数据库开发环境Windows上快速搭建测试数据库环境


2-7开发环境Docker介绍及创建数据库

Docker Docker是一个用于开发,交付和运行应用程序的开放平台。

2-8加餐Docker配置加速+docker-compose容
3-1快速上手安装官方nestjsCLI工具

nest 9.0.0


3-2基础中的基础什么是REST&如何设计

RESTful API定义
REST--REpresentational State Transfer 直接翻译:表现层状态转移,在程序员眼中,它代表着是一种接口风格。大多数业务应用程序必须与其他内部和第三方应用程序进行通信才能执行各种任务,所以才有一个“共识”的约定,这个约定(规则)就是RESTful API.

豆瓣/github 规范

设计
RESTful API需要设计序言、全局(错误码、请求Base、Proxy等)参数、修改记录以及按照功能划分的接口描述。

下面来介绍一份标准的接口设计中,重要的组成部分:
接口描述;请求URL;请求方式:POST/GET/DELETE/PUT;参数:Body 或者 Params 或者 Headers参数(JWT Token)及参数说明;返回示例;返回参数说明;

POST-add/GET-search/DELETE-del/PUT-update

测试工具
常见的测试工具:
客户端:Postman、Apifox、eolink doclever
网页端:Chrome插件Talend API、Postman Interceptor
I
插件工具:VSCode插件REST Client、HTTP Client

3-3第一个nestjs应用HelloWorld

3-4最佳实践工程目录+文件命名约定

工程目录
为了去理解Python的语言设计之美,其实更要理解这样的一句话“约定大于配置",好的工程化目录(约定)能够很好的提升项目的可维护性。

作者推荐
在官方的issues中,我们可以找到一些提示:Best scalable project structure#2249 这里有作者的回复。
src core I common middleware interceptors guards user interceptors(scoped interceptors)
user.controller.ts user.model.ts store store.controller.ts store.model.ts选择语言
可以使用monorepo的方法——在一个repo中创建两个项目,并在它们之间共享共同时示四,xu年。
没有模块目录,按照功能进行划分。
把通用/核心的东西归为单独的目录:common,比如:拦截器/守卫/管道

第一1参专项目
技术栈:Nest + sequelize-typescript + JWT + Jest + Swagger
I
项目地址:kentloog/nestjs-sequelize-typescript

第二个参考项目
一手:666java.com技术栈:具有AWS Lambda,DynamoDB,DynamoDB Streams的完全无服务器生产应用程序项目地址:International-Slackline-Association/Rankings-Backend

第三个参考项目:
技术栈:使用NestJS的 Blog/CMS,RESTful API 服务端应用项目地址:surmon-china/nodepressTemplate

代码规范(风格指南)我们对Angular风格指南进行了摘抄,如下:
参考:Angular风格指南总则
坚持每个文件只定义一样东西(例如服务或组件)考虑把文件大小限制在 400 行代码以内坚持定义简单函数
考虑限制在 75 行之内命名
坚持所有符号使用一致的命名规则坚持遵循同一个模式来描述符号的特性和类型使用点和横杠来分隔文件名坚持 在描述性名字中,用横杠来分隔单词。

me-x work ....open 规范

3-5CLI初试启动Nest应用程序+创建控制器

app. setGlobalPrefix(' api/v1');

4-1开发提效配置Webpack热重载模式

安装hot reload 不全部编译 部分--.

nestjs.com

https://docs.nestjs.cn/10/recipes?id=热重载

4-2配置vscode调试任务.mp4

launch.json
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch via NPM",
            "request": "launch",
            "runtimeArgs": [
                "run-script",
                "start:debug"
            ],
            "runtimeExecutable": "npm",
            "runtimeVersion": "default",
            "internalConsoleOptions": "neverOpen",
            "console": "integratedTerminal",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "type": "node"
        },
    ]
}

debug...gege dsx

4-3配置webstorm调试任务

4-4如何使用Chrome开发工具调试

npm run start:debug 浏览器控制器 node图标点击调式....

5-1章导学

学习TS的好处
一手:666java.com
支持高阶语法的支持书写
类型检测-> 大型项目-> 团队协作-> 提升效率
动态输入-> 自动推导-> 利于IDE-> 开发提效

5-2基础类型&引用类型
5-3函数类型
5-4函数重载

PS:在其他一些强类型语言中(JAVA,C++,C#),函数重载是指定义几个函数名相同,但参数个数或类型不同的函数,在调用时传入不同的参数,编译器会自动调用适合的函数

不能j头函数

5-5any&never&void&un
5-6tuple与enum
5-7Interface

Interface接口
一手:666java.com
接口可以定义任意类型&结构
Interface可扩展extends&自动合并相同类型接口
绕开多余属性检查:类型断言、索引签名、类型兼容

5-8Class类(修饰符、构建函数、接口扩展)
5-9泛型
5-10声明文件&tsconfig配置文件

6-1如何学习才高效以前端同学的视角看后端项目

编程思想
专为前端同学准备的技术大餐

重点目录
imooc用前端人的视角来看后端项目常见的后端概念(OOP,AOP,IoC,DI等)Nestjs架构篇,学习核心概念

前端看后端
a.com
API
web服务
数据库
JS
打包
SQL查询
编写逻辑
构建
性能优化
Monge
MySQL
部署
Web服务器
安全
数据库服务
RESTful API
数据校验
日志统计
数据备份
安全+性能
权限控制
M

6-2编程思想什么是OOP?FP?FRP编程?

什么是OOP?FP?FRP编程?

oop 面向读写编程

fp 函数编程

frp 函数响应式编程

这些概念其实是不同的编程范式范式,即写代码的方式&风格

一手:666java函数式编程
确定的数据输入、输出;没有“副”作用,相对独立;引用透明,对IDE友好,易于理解;

如今主流的vue/react中的书写方式;

面向对象编程
抽象现象生活中的事物特征,对于理解友好封装性(高内聚低耦合)、继承性、多态性Java、C#典型的面向对象的编程语言

函数式响应编程
666java.com适合需要对事件流进行复杂组合应用的场景响应式多用在异步的场景典型案例:rxjs,广告推荐

验证码按钮 可否点击 发布订阅模式

6-4葵花宝典什么是依赖注入(DI)&控制反转IoC

Ioc DI

Inversion Of Control
控制反转
Dependency Injection
依赖注入 nest angular...

IoC是一种思想&设计模式
DI是IoC的具体实现

Stduent-> play-> IPhone强依赖关系
IPhone依赖与Student-> 解耦

IoC与DI
.com控制反转(Inversion of Control)是一种是面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度。其基本思想是:借助于“
第三方"实现具有依赖关系的对象之间的解耦。
依赖注入(Dependency Injection)是一种用于实现IoC的设计模式它允许在类外创建依赖对象,并通过不同的方式将这些对象提供给类。

npm install reflect-metadata DI

6-5nestjs架构篇控制器、服务、数据访问(非常重要)

biibil Nestjs核心概念
一手:666ja客户端
Controller 层负责处理请求、返回响应。
请求响应
控制器
使用服务依赖注入
Service层负责提供方法和操作,只包含业务逻辑服务
数据库持久化
Data Access 层负责访问数据库中的数据数据接入

Nestjs应用生命周期
(非常重要)

Nestjs生命周期
客户端
中间件
守卫
拦截器
管道
控制器
响应
过滤器
拦截器
服务

钩子方法:定一个空的函数,用户可以自定义该方法来改变原有的逻辑

全局中间件
全局守卫
全局拦截器pre
全局管道
模块中间件
控制器守卫
控制器拦截器pre
控制器管道
路由守卫
路由拦截器pre
路由管道
路由参数管道

路由拦截器post
控制器拦截器post
全局拦截器post

路由过滤器
控制器过滤器
全局过滤器

6-6nestjs架构篇用模块来组织代码

模块 组件

大ハNIVHU使用Module来组织应用程序@Module装饰器来描述模块
模块中有4大属性:imports,providers,controllers,exports

Nestjs用模块来组织代码一手:666java.com功能模块共享模块全局模块
功能模块与共享模块是一回事,只是叫法不一样全局模块通常应用在配置、数据库连接、日志上动态模块是在使用到模块的时候才初始化(懒)动态模块

6-7加餐DTO,DAO是什么?MVC是什么架构?


Model View Controller
模型、视图、控制器
MVC是一种软件架构模式

Nestjs中的MVC一手:666ja Nestjs可以通过模板库实现View层,常见:pug、hus、ejs等

·Nestjs默认集成express作为web服务器,可以换成koa/fastify
.Controller响应前端的请求,Model是对应的具体的数据库逻辑

Data Transfer
数据传输对象
Object
Data Access Object
数据访问对象

请求
DTO
逻辑
DAO
数据库
接受部分数据
对数据进行筛选
不对应实体
属性是小于等于实体
对接数据库接口
不暴露数据库的内部信息
对应实体

方便数据校验(类型)

dao nest中的实体类 .enitity

DAO是一层逻辑:包含实体类、数据库操作(CURD)、数据校验、错误处理等
Nestjs做了一层更高级的封装,通过ORM库与种类数据库对接,而这些ORM库就是DAO层。

7-1全盘思路项目分析与Nestjs核心概念深入理解

mooc
重点目录
一手:666ja
通用后端框架设计:需要考虑4大块内容
多环境配置方案比较:dotenv vs config
Nestjs配置模块:多环境配置读取、配置校验joi

项目需求分析前,请思考
我们的项目用户最痛点的问题是什么?是角色设计?用户的功能的最小闭环是什么?内容查询&筛选?
辅助最小闭环的实现到项目上线,需要什么技术&方案?

blibl项目需求分析
666java.com
接口服务:提供可靠、可扩展的web服务,集成数据库+redis
实现最小闭环:接口CURD、登录注册(认证)、权限控制(鉴权)
服务部署与测试->提供文档(需求、测试、部署、产品...)

ا
关于接口服务
接口服务
请求
响应
请求数据校验 PIpe redis
请求认证 (鉴权设计)Guard redis
路由 Controller redis
功能逻辑 Service redis
数据库操作 Repositiorys redis mysql

666java.com
核心概念
Nestjs概念
控制器
Controllers
服务
Services
处理请求
数据访问与核心逻辑
模块
Modules
组合所有的逻辑代码
管道
Pipes
核验请求的数据
过滤器
Filters
处理请求时的错误
守卫
Guards
鉴权与认证相关
拦截器
Interceptors
存储库
Repositories
给请求与响应加入额外的逻辑
处理在数据库中数据
www.imooc.com

部分接口可以省去

7-2学习路径通用后端框架开发&4大核心模块

bil
一手:666java.com
项目技术栈
Nestjs+TypeScript作为后端
ORM库:TypeORM-> 官方的数据库对接方案
Bootstrap 5.x + Vue作为前端方案

通用后端框架思考
从开发层面的思考
从功能层面的思考
从接口安全层面的思考

多环境配置->生产、测试->数据库..
通用模块:用户、权限、菜单、日志
最后:接口文档、接口请求安全&性能

7-3多环境配置两种方案(优缺点比较)

dotenv

config.json yaml

7-4官方方案使用config设置配置模块-

npm i --save @nestjs/config

.env 配置

7-5官方方案进阶:增加环境变量、yaml文件读取

js-yaml @types/js-yaml

@nestjs/config+json/yaml

npm i config json

7-6官方方案进阶嵌套配置yaml文件读取
7-7加餐第三方库config读取json文件配置

7-8配置文件的参数验证Joi方案

npm install --save joi

7-9回顾与综合命令行传参与配置模块结合

8-1ORM介绍为什么nestjs能对接主流的所有数据库?

احاط重点目录
一手:666
ORM是什么?常见的ORM工具库有哪些?
集成TypeORM,学习TypeORM CLI的使用,创建接口并返回数据加餐:其他数据库MongoDB&Mongose

ORM(Object Relational Mapping)对象关系映射,其主要作用是在编程中,把面向对象的概念跟数据库中的概念对应起来。
举例:定义一个对象,那就对应着一张表,这个对象的实例,就对应着表中的一条记录

方便维护:数据模型定义在同一个地方,利于重构代码量少、对接多种库:代码逻辑更易懂工具多、自动化能力强:数据库删除关联数据、事务操作等

Prisma
Sequelize
TypeORM
EdoeDB
query

8-2核心概念关系型&非关系型、数据库设计工具、排行

数据库相关概念
关系型数据库,是指采用了关系模型来组织数据的数据库。
NoSQL是对不同于传统的关系数据库的数据库管理系统的统称。

常见关联类型
一对一、
一对多
多对多

什么是ERD图?

数据库相关工具
ERD设计:Navicat,dbdesigner,QuickDBD等在线工具

数据库参考:open.yesapi.cn/list.html

Oracle
MySQL
Microsoft SQL Server
PostgreSQL
MongoDB
Redis
IBM Db2
Elasticsearch
Microsoft Access
SQLite

常见数据库
关系型:MySQL、Oracle,SQL Server,Access,SQLite
非关系型:MnogoDB,Redis,Hbase,Memcache

一手:
关系型数据库特点
优点:易于维护、使用方便、支持复杂查询效率高缺点:读写性能差,灵活性差场景:各类业务系统、管理系统、安全性较高的场景

非关系型数据库特点
一手:666java.com优点:易于扩展,大文件存储,查询速度快缺点:复杂计算与联合查询效率低,场景:多格式&海量数据、分布式消息系统、统计排行

8-3加餐MySQL数据库中的实体(主键和列)概念浅析

数据库相关概念
表、列、主键、外键

SQL资源推荐
一手:666java.com
慕课网:搜索数据库相关课程
菜鸟教程:https://www.runoob.com/sql/sql-tutorial.html

数据表:表是数据的矩阵,表头展示的是所有列名称(字段);行:一行(记录)是一组相关的数据;列:一列(数据)包含了相同类型的数据;主键:区分、查询、排序数据

外键:关联两个表imoo

8-4两种nestjs数据库解决方案mongoose与type

8-5数据库设计三大范式及ER图设计

需求分析
逻辑设计
数据库创建
维护与优化

1.用户系统
2.权限系统

数据库设计三大范式 6

于.01NF是对属性的、原子性,要求属性具有原子性,不可再分解;


2NF是对记录的唯一性,要求记录有唯一标识,即实体的唯一性,即不存在部分依赖;

如果一个关系属于第二范式,并且在两个(或多个)非主键属性之间不存在函数依赖。非主键属性之间的函数依赖也称为传递依赖,那么这个关系属于第三范式。

8-6使用TypeOrm创建多个实体&创建1对1关系

实体写
一对一
@OneToOne(()=>User) User实体
@JoinColumn({name:'user_id'})  //默认拼接
user:User


@OneToMany(()=>Logs,(logs)=>logs.user)
logs:Logs[]
一对多
@ManyToOne(()=>User,(user)=>user.logs)
user:User

俩个实体
@ManyToMany(()=>Logs,(logs)=>logs.user) 
@JoinTable()
logs:Logs[]
@ManyToMany(()=>User,(user)=>user.logs)
user:User[]

8-7TypeOrm中一对多、多对多关系

8-8旧项目已有数据库怎么玩TypeORM生成器来帮忙

sql to 实体

typeorm model generator

old project 统一放

new 单独在控制器同级

8-10TypeORM关联查询一对一、一对多关系

8-11高级查询使用QueryBuilder进行联合查询

聚合查询 多条件查询

一手:
什么是QueryBuilder QueryBuilder是TypeORM最强大的功能之一,它允许你使用优雅便捷的语法构建SQL查询,执行并获得自动转换的实体。

8-12TypeORMSQL语句调试&原生SQL能力

orm 配置 logging: true,

可以查询sql语句

query()原生查询

9-1日志有哪些类型?功能分类?记录位置?

日志的作用记录错误并定位问题

日志需要怎么定位问题?
什么时间发生的?发生了什么事情?
错误是什么?

常见日志及获取(记录)方式
第三方日志方案:winston(勤快的人)、pino(推荐懒人)

通用业务系统日志系统配置(学习定时任务)

日志等级
一手:666java.com Log:通用日志,按需进行记录(打印)Warning:警告日志,比如:尝试多次进行数据库操作Error:严重日志,比如:数据库异常Debug:调试日志,比如:加载数据日志Verbose:详细日志,所有的操作与详细信息(非必要不打印)

一手:666java.cor功能分类日志
错误日志->方便定位问题,给用户友好的提示调试日志-> 方便开发请求日志-> 记录敏感行为

日志记录位置
一手:666ja
控制台日志->方便监看(调试用)
文件日志->方便回溯与追踪(24小时滚动)
数据库日志->敏感操作、敏感数据记录

9-2nestjs内置日志模块Logger

创建nest时 关闭日志 1
• pnpm i pino-roll
1 rasdv un to data

nestjs-pino 可以配置输出路径

9-3全自动高性能日志模块Pino、日志滚动pino-roll

9-4高度集成的日志模块winston

nest-winston

9-5全局异常过滤器配合winston记录日志(作业全局Fil

9-6作业解答全局FIilters&如何获取请求IP

import * as requestIp from 'request-ip';

9-7通用业务系统日志模块代码重构(作业)

9-8数据库代码重构TypeORMCli与Nestjs集成

ormconfig.ts

9-9生产代码重构TypeORM数据库及生产配置
10-1前端项目初始化使用Vue全家桶+Bootstrap创建
10-2好用到飞起的前端HTTPClient请求库Axios封
10-3前端登录页面介绍Boostrap的栅格系统,完成登录页
10-4表单校验登录表单Bootstrap校验,模拟发送请求
10-5前端内容页完成页面布局(创建路由)
10-6前端详情页完成表格布局(分页、筛选表单)
10-7创建控制器定义用户模块并创建控制器
10-8进阶使用@Param和@Body解析请求
10-9查询创建读取列表服务(业务分析&SQL基础)
10-10查询对接数据库查询操作(作业)
10-11查询进阶queryBuilder及几种JOIN的学习
10-12查询进阶queryBuilder及几种JOIN的学习
10-13创建用户创建及异常处理逻辑TypeORMFilter

10-14(重要)remove&delete区别控制器

服务与存储库的区别
一手:666java.com
Service
服务
Repositories
存储库
是一个Class
是一个Class
存放核心逻辑
与数据库进行交互
使用一个或多个存储库
返回实体类、模型等

1.remove可以一次性删除单个或者多个实例;并且remove可以触发BeforeRemove,AfterRemove钩子;

2.delete可以一次性删除单个或者多个id实例,或者给定条件;

10-15更新操作&数据库更新对接
10-16前端表单及模态框创建新增、编辑、删除模态框
10-17前后端联调页面CURD操作及接口响应(作业)

11-1nestjs后端注册登录简介登录鉴权相关概念

基础鉴权
session/cookie
JWT
Qauth

一手:
核心概念
鉴权

算法/加密

HTTPS
基础鉴权
Base64
SSL
session/cookie
MD5/SHA-1
HTTP劫持
JWT
DES/AES
数据篡改
Oauth
RSA/ECC
敏感信息
中间人

Session
Cookie
JWT
优点:
易扩展
支持移动设备
跨应用调用
安全
承载信息丰富
Oauth
缺点:
刷新与过期处理
Payload不易过大
中间人攻击

Session Cookie优点:较易扩展
简单
JWT Oauth缺点:安全性低
性能低,服务端存储多服务器同步session困难跨平台困难

Session
Cookie
JWT
优点:
开放
安全
简单
权限指定
Oauth
缺点:
需要增加授权服务器
增加网络请求

11-2JWT的工作原理

JWT的全称是 JSON Web Token,一个JWT由三部分构成:Header,Payload,Signature。

防CSRF(主要是伪造请求,带上Cookie)
适合移动应用
无状态,编码数据

jwt.io

11-3API接口安全相关知识(加密&算法&HT

一手:666java.com算法/加密
算法中的指令描述的是一个计算,当其运行时能从一个初始状态和初始输入(可能为空)开始,经过一系系列有限而清晰定义的状态最终产生输出并停止于一个终态。

数据加密的基本过程,就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”。通过这样的途径,来达到保护数据不被非法人窃取、阅读的目的。

通信信道加密:使用HTTPS通信数据加密:密文+加密关键数据通信安全策略:授权中间层、尝试次数、过期策略….

11-4nestjs鉴权库JWT核心文档解析

https://docs.nestjs.cn/10/security

https://docs.nestjs.cn/9/security

11-5nestjs用户认证创建认证控制器
[11-6操作创建和保存用户
11-7Nestjs管道概念三大类型管道及校验类管道创建过程
11-8管道nestjs基于装饰器的验证使用类验证器
11-9管道nestjs内置管道及如何使用自定义管道
11-10(非常重要)回顾前置知识完成JWT集成
11-11解析官方示例LocalStrategy与JwtStr
11-12JWT实操sign与解析jwt
11-13鉴权守卫设置鉴权用户可访问的控制器(作业)
11-14安全进阶全局守卫、控制器守卫、守卫简化

11-15敏感信息操作使用argon2库对密码进行加密

HASH化
使用加密算法
进行加密
库:
crypto
argon2
+bcrypt
算法:
ase
md5

11-16拦截器前导学习删除敏感信息

响应拦截器 过滤

11-17拦截器进阶(序列化)敏感数据如何处理?

序列化

serialization自定义拦截器Serialization

序列化(Serialization)是一个在网络响应中返回对象前的过程。 这是一个适合转换和净化要返回给客户的数据的地方。例如,应始终从最终响应中排除敏感数据(如用户密码)。此外,某些属性可能需要额外的转换,比方说,我们只想发送一个实体的子集。手动完成这些转换既枯燥又容易出错,并且不能确定是否覆盖了所有的情况。

nestjs-database-refactor

https://github.com/PangHao-NEFU/nestjs-database-refactor-backend.git

bootstrap.cn/doc/read/113.html

火趣昌理命
NESTJS-LESSON NESTJS-FRONTEND

tool.lu/sql/

https://gitee.com/alin18/nestjs-lesson/tree/master

https://gitee.com/lishuaiaidaima/nestjs-frontend

posted @ 2024-12-12 11:07  KooTeam  阅读(560)  评论(0)    收藏  举报