1 引入依赖
在pom.xml文件中引入依赖:
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.16</version> </dependency>
2 配置全局环境
在application.properties中配置验证码的存储路径,即
#配置图片存储路径 imagepath=D:\\JAVA\\image\\
并配置环境:
@Configuration public class AppConfig implements WebMvcConfigurer { @Value("${imagepath}") private String imagepath; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/image/**").addResourceLocations("file:"+imagepath); } }
3 生成验证码并保存
@Value("${imagepath}")
private String imagepath;
@Autowired
private RedisTemplate redisTemplate;
@RequestMapping("/getcode")
public AjaxResult getCheckCode(){
//1 生成验证码
//定义图形验证码的长和宽
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(128, 50);
//图形验证码写出,可以写出到文件,也可以写出到流,保存图片
String key=UUID.randomUUID().toString().replace("-","");
lineCaptcha.write(imagepath+key+".png");//保存路径
//真实验证码
//2 保存验证码到本地
String truecode= lineCaptcha.getCode();
//3 项目配置文件中设置本地图片的映射
//4 生成一个key(uuid) 并且将此key和真实的验证码放到redis
redisTemplate.opsForValue().set(key,truecode);
//5 将key和图片访问地址(http/https)返回给前端
HashMap<String,Object> result=new HashMap<>();
result.put("codekey",key);
result.put("codeurl","/image/"+key+".png");
return AjaxResult.succ(result);
}