若依改用EasyCaptcha验证码

若依自带的验证码样式比较单一,所以想改用EasyCaptcha验证码,另外EasyCaptcha算术验证码可能会有负数,输入时需要写负号,比较麻烦,所以使用一个简单的方法过滤掉负数结果

原本的验证码依赖和代码可删可不删,注释掉即可

  1. 在父模块添加依赖

    xml 复制代码
    <properties>
    	<captcha.version>1.6.2</captcha.version>
    </properties>
    
    <dependencyManagement>
    	 <dependencies>
    <!-- EasyCaptcha验证码依赖  -->
    		<dependency>
           			 <groupId>com.github.whvcse</groupId>
          		           <artifactId>easy-captcha</artifactId>
            		 <version>${captcha.version}</version>
    		</dependency>
    	</dependencies>
    </dependencyManagement>
  2. ruoyi-admin模块中添加依赖

    xml 复制代码
    <!-- 验证码 -->
    <dependency>
        <groupId>com.github.whvcse</groupId>
        <artifactId>easy-captcha</artifactId>
    </dependency>
  3. 找到CaptchaController,java,修改getCode方法

    java 复制代码
    public AjaxResult getCode(HttpServletResponse response) throws IOException, FontFormatException {
            AjaxResult ajax = AjaxResult.success();
            boolean captchaEnabled = configService.selectCaptchaEnabled();
            ajax.put("captchaEnabled", captchaEnabled);
            if (!captchaEnabled)
            {
                return ajax;
            }
    
            // 保存验证码信息
            String uuid = IdUtils.simpleUUID();
            String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
         
            //新验证码
            //图形验证码
            //SpecCaptcha captcha = new SpecCaptcha(130, 48, 4);
            //算术验证码
            ArithmeticCaptcha captcha;
            String code;
    
            captcha = new ArithmeticCaptcha(130, 48);
            //得到验证码的值
            code = captcha.text();
            //若为负数则重新生成
            int i = Integer.parseInt(code);
            while (i < 0){
                System.out.println("code = " + code + ",负数,重新生成!!!!!!!!");
                captcha = new ArithmeticCaptcha(130, 48);
                code = captcha.text();
                i = Integer.parseInt(code);
                System.out.println("i = " + i + ",新值!!!");
            }
            // 设置内置字体
            captcha.setFont(Captcha.FONT_1);
            //captcha.setLen(2);  // 几位数运算,默认是两位
            //captcha.getArithmeticString();  // 获取运算的公式
            //存入redis
            redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
    
           //旧验证码
            //String capStr = null, code = null;
            //BufferedImage image = null;
            //
            //// 生成验证码
            //String captchaType = RuoYiConfig.getCaptchaType();
            //if ("math".equals(captchaType))
            //{
            //    String capText = captchaProducerMath.createText();
            //    capStr = capText.substring(0, capText.lastIndexOf("@"));
            //    code = capText.substring(capText.lastIndexOf("@") + 1);
            //    image = captchaProducerMath.createImage(capStr);
            //}
            //else if ("char".equals(captchaType))
            //{
            //    capStr = code = captchaProducer.createText();
            //    image = captchaProducer.createImage(capStr);
            //}
            //
            //redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
            //// 转换流信息写出
            //FastByteArrayOutputStream os = new FastByteArrayOutputStream();
            //try
            //{
            //    ImageIO.write(image, "jpg", os);
            //}
            //catch (IOException e)
            //{
            //    return AjaxResult.error(e.getMessage());
            //}
    
            ajax.put("uuid", uuid);
            ajax.put("img", captcha.toBase64());
            return ajax;
        }

另外,欢迎大家来我的博客------火柴人儿的小站来玩~

相关推荐
行百里er21 小时前
Redis 完结篇——Redis 热点问题在 Spring Boot 项目中实战
redis·后端
高频因子挖掘机1 天前
只取最近 60 个交易日,却每次拉全历史:量化脚本变慢的原因与改法
后端·github·api
孟健1 天前
从5000亿Token到83%字节匹配:AI逆向工程与重构的工程闭环实践
后端·架构·ai编程
码事漫谈1 天前
丢得静悄悄,谈一谈 Agent 的记忆是怎么没的
后端
迪飞特科技1 天前
智慧物业平台实战:Spring Boot 整合小程序实现报修巡检费用全流程
spring boot·后端·小程序
考虑考虑1 天前
@JsonInclude注解使用
spring boot·后端·spring
IT_陈寒1 天前
Vite的这个问题坑了我三天,原来如此解决!
前端·人工智能·后端
网易云信1 天前
大模型能上岗做销售吗?我们让 12 款国产模型交了 420 份作业
前端·后端
CCblandy1 天前
HTTP 长连接 3 类故障实测:[WinError 10053]、99 个 TIME_WAIT、69 次多余握手,4 种对策怎么选
后端·python·网络协议·http·云原生·性能优化·架构
蜗牛互联网1 天前
Python Agent工具调用的白名单、参数校验与审批门禁
java·服务器·前端·人工智能·后端·python