easy-captcha结合redis缓存实现验证码功能

1.constants定义缓存的key以及过期时间

public class Constants {
    //验证码
    public static final String REDIS_KEY_CHECK_CODE = "esaychat:checkcode";

    //过期时间一分钟
    public static final Integer REDIS_TIME_ONE_MIN = 60;
}

2.Controller调用redis工具类的setex方法写入redis缓存,实现验证码功能

@RestController("accountController")
@RequestMapping("/account")
@Validated//参数校验
public class AccountController extends ABaseController {

    private static  final Logger logger = LoggerFactory.getLogger(AccountController.class);

    @Resource//注入redis
    private RedisUtils redisUtils;

    @RequestMapping("/checkCode")
    public ResponseVo checkCode(){
        // 三个参数分别为宽、高、位数
        GifCaptcha gifCaptcha = new GifCaptcha(100, 42, 4);
        // 设置类型:字母数字混合
        gifCaptcha.setCharType(Captcha.TYPE_DEFAULT);
        String code = gifCaptcha.text();
        String checkCodeKey = UUID.randomUUID().toString();
        redisUtils.setex(Constants.REDIS_KEY_CHECK_CODE,code,Constants.REDIS_TIME_ONE_MIN * 10);
        //logger.info("验证码是{}",code);
        //转换为Base64编码字符串
        String checkCodeBase64 = gifCaptcha.toBase64();
        Map<String,String> result = new HashMap<>();
        result.put("checkCode",checkCodeBase64);
        result.put("checkCodeKey",checkCodeKey);
        return getSuccessResponseVo(result);
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值