- 创建项目
- Nest 控制器
- nest 配置路由请求数据
- Nest 服务
- Nest 模块
- 配置静态资源
- 配置模板引擎
- Cookie 的使用
- Session 的使用
- 跨域,前缀路径、网站安全、请求限速
- 管道、守卫、拦截器、过滤器、中间件
- 一例看懂中间件、守卫、管道、异常过滤器、拦截器
- 数据验证
- 配置抽离
- 环境配置
- 文件上传与下载
- 实现图片随机验证码
- 邮件服务
- nest 基于 possport + jwt 做登陆验证
- 对数据库的密码加密:md5 和 bcryptjs
- 角色权限
- 定时任务
- 接入 Swagger 接口文档
- nest 连接 Mongodb
- typeORM 操作 Mysql 数据库
- nest 统一处理数据库操作的查询结果
- 数据库实体设计与操作
- typeorm 增删改查操作
- typeorm 使用事务的 3 种方式
- typeorm 一对一关系设计与增删改查
- typeorm 一对多和多对一关系设计与增删改查
- typeorm 多对多关系设计与增删改查
- nest 连接 Redis
- 集成 redis 实现单点登录
- Q:nestJS 注入其他依赖时为什么还需要导入其 module
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
跨域,前缀路径、网站安全、请求限速
跨域,路径前缀,网络安全
yarn add helmet csurf
// main.ts import { NestFactory } from '@nestjs/core'; import { Logger, ValidationPipe } from '@nestjs/common'; import * as helmet from 'helmet'; import * as csurf from 'csurf'; import { AppModule } from './app.module'; const PORT = process.env.PORT || 8000; async function bootstrap() { const app = await NestFactory.create(AppModule); // 路径前缀:如: http://www.test.com/api/v1/user app.setGlobalPrefix('api/v1'); //cors:跨域资源共享,方式一:允许跨站访问 app.enableCors(); // 方式二:const app = await NestFactory.create(AppModule, { cors: true }); //防止跨站脚本攻击 app.use(helmet()); //CSRF 保护:跨站点请求伪造 app.use(csurf()); await app.listen(PORT, () => { Logger.log( `服务已经启动,接口请访问:localhost:${PORT}${PREFIX}`, ) }); } bootstrap();
限速:限制客户端在一定时间内的请求次数
yarn add @nestjs/throttler
在需要使用的模块引入使用,这里是全局使用,在 app.module.ts
中引入。这里设置的是:1 分钟内只能请求 10 次,超过则报 status 为 429 的错误
app.module.ts import { APP_GUARD } from '@nestjs/core'; import { Module } from '@nestjs/common'; import { UserModule } from './modules/user/user.module'; //引入 import { ThrottlerModule, ThrottlerGuard } from '@nestjs/throttler'; @Module({ imports: [ UserModule, ThrottlerModule.forRoot({ ttl: 60, //1 分钟 limit: 10, //请求 10 次 }), ], providers: [ //全局使用 { provide: APP_GUARD, useClass: ThrottlerGuard, }, ], }) export class AppModule { }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论