→ 자체 보안문자 (로그인, 회원가입에 많이 씀)
npm install svg-captcha
// captcha.controller.ts
import { Controller, Get, Session } from '@nestjs/common';
import * as svgCaptcha from 'svg-captcha';
@Controller('captcha')
export class CaptchaController {
@Get()
getCaptcha(@Session() session: Record<string, any>) {
const captcha = svgCaptcha.create({
size: 5,
noise: 2,
ignoreChars: '0oO1il',
});
session.captcha = captcha.text; // 정답 저장
return {
image: captcha.data, // SVG 문자열
};
}
}
⚠️ @Session()을 쓰려면 express-session 설정이 필요함
<img
src={`data:image/svg+xml;utf8,${encodeURIComponent(captchaImage)}`}
alt="captcha"
/>
@Post('verify')
verifyCaptcha(
@Body('value') value: string,
@Session() session: Record<string, any>,
) {
return value === session.captcha;
}