首页 > 编程语言 >java 生成图片验证码

java 生成图片验证码

时间:2022-11-30 10:24:54浏览次数:40  
标签:return imageCodeKey java 验证码 生成 String import cn

import cn.hutool.cache.CacheUtil;
import cn.hutool.cache.impl.TimedCache;
import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.CircleCaptcha;
import cn.hutool.core.util.IdUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;

/**
 * 图片验证码工具类
 * @author fzg
 */
@Slf4j
@Service
public class ImageCodeTool {
    /**
     * 图片验证码缓存器
     */
    public static TimedCache<String, String> imageCodeCache = CacheUtil.newTimedCache(6000000);

    /**
     * 获得图片验证码
     * @return imageCodeKey、imageCodeBase64
     */
    public static Map<String, Object> getImageCode() {
        //启动定时器,没1秒清理一次
        imageCodeCache.schedulePrune(10000000);

        CircleCaptcha circleCaptcha = CaptchaUtil.createCircleCaptcha(200, 100, 4, 20);
        //将数据存储到缓存器中
        String imageCodeKey = IdUtil.simpleUUID();
        String imageCodeBase64 = circleCaptcha.getImageBase64Data();
        imageCodeCache.put(imageCodeKey, circleCaptcha.getCode());
        //返回结果
        Map<String, Object> result = new HashMap<>();
        result.put("imageCodeKey", imageCodeKey);

        result.put("imageCodeBase64", imageCodeBase64);
        log.info(circleCaptcha.getCode());
        return result;
    }

    /**
     * 校验图片验证码
     * @param imageCodeKey 验证码秘钥
     * @param imageCode 验证码
     * @return
     */
    public static boolean imageCodeCheck(String imageCodeKey, String imageCode) {
        String code = imageCodeCache.get(imageCodeKey);
        if(code == null) {
            return false;
        }
        else {
            if(code.equals(imageCode)) {
                return true;
            }else {
                return false;
            }
        }
    }
}

标签:return,imageCodeKey,java,验证码,生成,String,import,cn
From: https://www.cnblogs.com/Fantasyfzg/p/16937611.html

相关文章

  • JavaScript基础(一)
    JavaScript基础第01天1-编程语言1.1编程编程:就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。计算机程序:就是计算机所......
  • Java猜数字游戏
     packagecn.edu.dcxy;importjava.util.Random;importjava.util.Scanner;publicclassGuessNumber{publicstaticvoidmain(String[]args){i......
  • JavaScript调用App原生代码(iOS、Android)通用解决方案
     实际场景场景:现在有一个H5活动页面,上面有一个登陆按钮,要求点击登陆按钮以后,唤出App内部的登录界面,当登录成功以后将用户的手机号返回给H5页面,显示出来。这个场景应......
  • java Http请求工具类
    importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;importlombok.extern.slf4j.Slf4j;importjavax.net.ssl.*;importjava.io.*;importj......
  • 【java异常排查】 报错原因及排查【异常 解决方法】【经验总结】
    ​ 报错一:org.apache.jasper.JasperException:/xxx/xxx/xx.jsp(line:2312,column:334)TheJSPspecificationrequiresthatanattributenameisprecededbywh......
  • IntelliJ IDEA 2022.2.3注释快捷键(java)
    注释行和代码块使用Ctrl斜杠注释掉任意一行使用相同的快捷方式取消注释注释行:将文本光标置于该行中的任意位置,然后按Ctrl斜杠。选择几行,然后使用Ctrl斜杠注释掉要......
  • JavaScript合集(流程控制语句)
    流程控制条件判断语句条件分支语句循环语句条件判断语句if语句语法: if(条件表达式){ 语句 } ------- if(a>10){alert('a比10大')......
  • [XState] Create Actor in Vanilla Javascript
     functioncountBehavior(state,event){if(event.type==="INC"){return{...state,count:state.count+1}}}functioncreateA......
  • Java常用IO流
    字节输入输出流FileInputStream字节输入流常用方法:intread(byte[]b,intoff,intlen)返回读取的长度,读取失败返回-1。最多读取len个字节,读来的数据存放在b中,从第b......
  • Java中使用commons-io组件
    安装配置在其官网(CommonsIO–DownloadApacheCommonsIO)下载好之后,在项目中导入使用1、复制文件voidcopyFile(finalFilesrcFile,finalFiledestFile)//复......