nest.js实现登录验证码功能(学习笔记)

安装express-session

npm i express-session 

引入 注册session

import * as session from 'express-session';import { NestFactory } from '@nestjs/core';
import {DocumentBuilder,SwaggerModule,
} from '@nestjs/swagger';import { AppModule } from './app.module';async function bootstrap() {// NestFactory 用来创建 Nest 应用实例const app = await NestFactory.create(AppModule);// secret: 生成服务端session 签名 可以理解为加盐// name: 生成客户端cookie 的名字 默认 connect.sid// cookie: 设置返回到前端 key 的属性,默认值为{ path: ‘/’, httpOnly: true, secure: false, maxAge: null }。// rolling:在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false)// 配置swgui接口文档const config = new DocumentBuilder().setTitle('Cats example').setDescription('The cats API description').setVersion('1.0').addTag('cats').build();const document = SwaggerModule.createDocument(app, config);SwaggerModule.setup('api', app, document);app.use(session({ secret: "XiaoMan", name: "xm.session", rolling: true, cookie: { maxAge: null } }))// restful版本控制// app.enableVersioning({//   type: VersioningType.URI// })await app.listen(3000);
}
bootstrap();

安装验证码插件 svgCaptcha

npm install svg-captcha -S

验证码接代码如下

import * as svgCaptcha from 'svg-captcha';
import {Body,Controller,Get,Post,Req,Res,Session,
} from '@nestjs/common';
import { WeiService } from './wei.service';
@Controller('wei')
export class WeiController {constructor(private readonly weiService: WeiService) {}// 获取验证码接口@Get('code')createCode(@Req() req, @Res() res, @Session() session) {const captcha = svgCaptcha.create({size: 4,//生成几个验证码fontSize: 50, //文字大小width: 100,  //宽度height: 34,  //高度background: '#cc9966',  //背景颜色})req.session.code = captcha.text //存储验证码记录到sessionres.type('image/svg+xml')res.send(captcha.data)}// 效验验证码@Post('create')createUser(@Body() body, @Session() session) {// console.log("@!@@", body, session.code)if (session.code === body?.code) {return {message: "验证码正确!!!!!"}} else {return {message: "验证码错误!!!!!!!!!!!!!!!"}}}
}

结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/447679.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

废品上门回收小程序搭建全过程

随着人们对环境保护意识的不断增强,废品回收成为了一项重要的社会活动。为了方便废品回收的顾客和回收者之间的联系,废品上门回收小程序成为了一种流行的解决方案。然而,如何选择一款合适的废品上门回收小程序搭建平台呢?下面将为…

【Linux网络编程三】Udp套接字编程(简易版服务器)

【Linux网络编程三】Udp套接字编程(简易版服务器) 一.创建套接字二.绑定网络信息1.构建通信类型2.填充网络信息①网络字节序的port②string类型的ip地址 3.最终绑定 三.读收消息1.服务器端接收消息recvfrom2.服务器端发送消息sendto3.客户端端发送消息sendto4.客户端…

手把手教测试,全网内容最全最深-jmeter-Switch Controller(Switch控制器)

5.1.6.17.Switch Controller(Switch控制器) 主要用于根据参数判断具体执行哪一个取样器。 在Switch Value中设置:数字,就是上图。不常用在Switch Value中设置:${变量名},根据变量名称来决定具体执行哪一个取样器。常用在Switch Value中设置:取样器名称,根据设置的取样器名…

绍兴市越城区人大常委会主任徐荻一行莅临迪捷软件走访慰问

2024年2月2日上午,绍兴市越城区人大常委会主任徐荻一行来到迪捷软件走访慰问高层次人才、迪捷软件董事长康烁,送上节日的问候与新春的祝福。 徐主任一行参观了迪捷软件办公环境,听取了迪捷软件的发展情况和来年规划,亲切询问了康烁…

在openfeign客户端如何获取到服务端抛出的准确异常信息?? openfeign调用(请求/响应)的各个大致过程

在openfeign客户端如何获取到服务端抛出的准确异常信息?? 相关参考背景引入浏览器直接访问Spring的Restful接口(最普遍、简单的访问)示例结论 openfeign客户端调用的情况调用过程示例场景之一(其他场景可类比&#xff…

基于SSM+MySQL的的新闻发布系统设计与实现

目录 项目简介 项目技术栈 项目运行环境 项目截图 代码截取 源码获取 项目简介 新闻发布系统是一款基于Servletjspjdbc的网站应用程序,旨在提供一个全面且高效的新闻发布平台。该系统主要包括后台管理和前台新闻展示两个平台,涵盖了新闻稿件的撰写…

嵌入式软件设计

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

Java设计模式 – 四大类型

设计模式 – 四大类型 创建型模式结构型模式行为型模式J2EE模式 设计模式(Design pattern)是重构解决方案 根据书Design Patterns – Elements of Reusable Object-Oriented Software(中文译名:设计模式 – 可复用的面向对象软件元…

【对象属性拷贝】⭐️按照需要转换的类型反射设置拷贝后对象的属性

背景: 小伙伴们大家好,最近开发的时候遇到一种情况,项目引入了全局序列化器来实现Date,LocalDateTime类型的字段根据时区转换,总体来说接口没什么要改动的,只要原来字段的属性是以上两种就行,但…

react+ts

1.概念 React和TypeScript集合使用的重点集中在 存储数据/状态有关的Hook函数以及组件接口的位置,这些地方最需要数据类型校验 2.使用Vite创建项目 Vite是前端工具链工具,可以帮助我们快速创建一个 reactts 的工程化环境出来 Vite官网:ht…

【C++】文件IO

目录 一、C语言的输入输出二、流的概念三、operator bool四、C文件IO流ifstream和ofstreamostringstream和istringstreamstringstream 一、C语言的输入输出 C语言中我们用到的最频繁的输入输出方式就是 scanf() 和 printf()。 scanf(): 从标准输入设备&#xff08…

GitHub的使用操作

记得看目录哦! 1. 创建仓库2. 下载desktop3. 把创建的库克隆到本地4. 文件拷贝到本地仓库![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/7171ac6c4ca14e3b8d22717121f79c9e.png)5. 在网址后面加/compare进行比较6. 给系统添加功能 1. 创建仓库 2. 下载…