Bootstrap

SpringBoot项目实现验证码

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);
    }

 

;