在 Nestjs 中使用验证码

在 Nestjs 中使用验证码

依赖安装

shell
pnpm i svg-captcha uuid @nestjs/cache-manager

创建并配置 captcha 模块

shell
nest g res system/captcha --no-spec

更改 captcha.controller.ts

  1. 我们可以选择生成字母数字类型的或者数学计算的验证码
  2. 我们需要一个校验用户是否输入正确验证码的接口

根据 captcha.controller.ts 需要的功能我们来更改 captcha.service.ts

  • 这里使用 uuid 可以最大概率保证 key 的唯一性
  • 记得 Cache 模块一定要从 @nestjs/cache-manager 包中导入
  • 这里需要用到缓存模块,下一部分会说明

cache-keys.enum.ts 的内容为

cache-keys.enum.tsts
export const CacheKeys = {
    CAPTCHA_CACHE_KEY: 'captcha',
} as const;

配置缓存模块

在 app.module 中我们需要配置一下缓存模块,让它使用 redis 而不是默认的内存缓存

这里的 config 模块使用我们自己改变的一种写法(当然这个是在官方文档里有说明的),这种写法可以让我们在取用配置时有提示,我这里有另一篇文章来说明

nest-config 模块的人体工学适配

清理代码

使用命令创建的 captcha 模块会有 entity 和 dto,这里我们用不到可以将其删除。

nest-config 模块的人体工学适配
编程学习网站