1.依赖
导入hutool工具包用于创建验证码
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.5.2</version>
</dependency>
2.测试
生成一个验证码图片(生成的图片浏览器可以识别)
public static void main(String[] args) {
//1.生成验证码
CircleCaptcha circleCaptcha = CaptchaUtil.createCircleCaptcha(130, 50, 4, 30);
//2.获取验证码code
String code = circleCaptcha.getCode();
//3.获取验证码图片的base64编码
String base64 = circleCaptcha.getImageBase64Data();
//4.生成一个唯一的key
String key = UUID.randomUUID().toString();
System.out.println("key = " + key);
System.out.println("code = " + code);
System.out.println( base64);
}
随机生成的图片验证码
3.redis
将对应的数据存入redis当中去
package com.atguigu.spzx.manager.service.imp;
import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.CircleCaptcha;
import com.atguigu.spzx.manager.service.ValidateCodeService;
import com.atguigu.spzx.model.vo.system.ValidateCodeVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.UUID;
/**
* @version: java version 1.8
* @Author: Mr Orange
* @description:
* @date: 2025-02-04 20:38
*/
@Service
public class ValidateCodeServiceImpl implements ValidateCodeService {
@Autowired
RedisTemplate<String,String> redisTemplate;
@Override
public ValidateCodeVo generateValidateCode() {
//1.生成验证码
CircleCaptcha circleCaptcha = CaptchaUtil.createCircleCaptcha(130, 50, 4, 30);
//4.生成一个唯一的key
String codeKey = UUID.randomUUID().toString().replace("-", "");
//2.获取验证码code
String code = circleCaptcha.getCode();
System.out.println("code = " + code);
//3.获取验证码图片的base64编码
String baseimg = circleCaptcha.getImageBase64Data();
//后端在redis保存key跟code
redisTemplate.opsForValue().set(codeKey,code);
//前端返回key跟img
ValidateCodeVo validateCodeVo = new ValidateCodeVo();
validateCodeVo.setCoderKey(codeKey);
validateCodeVo.setCoderValue(baseimg);
return validateCodeVo;
}
}