easy

easy,第1张

easy_captcha生成算术公式只要“十”和“X” easy_captcha图形验证码算术规则替换maven引入依赖包自定义工具类CaptchaUtils实现类中使用效果

easy_captcha图形验证码算术规则替换

这款图形验证码有算术、英文数字、中文几种展示效果,我在使用了比较简单的算术类型后,发现会计算减法产生负数结果,让一些老眼昏花的用户体验不好,所以就重写下父类方法,把减法替换为加法。

maven引入依赖包
    
        com.github.whvcse
        easy-captcha
        1.6.2
    
自定义工具类CaptchaUtils
import com.wf.captcha.ArithmeticCaptcha;
import lombok.extern.slf4j.Slf4j;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

/**
 * easy-captcha图形验证码工具
 * 继承算术类型:仅保留加法、乘法
 */
@Slf4j
public class CaptchaUtils extends ArithmeticCaptcha {

    public CaptchaUtils(int width, int height) {
        super(width, height);
    }

    public String text() {
        //获取父类算术公式,将减法替为加法。
        String verifyCode = super.getArithmeticString().replaceAll("-", "+");
        //log.info("原公式{}", super.getArithmeticString());
        //log.info("新公式{}", verifyCode);
        //将已有的公式替换掉
        super.setArithmeticString(verifyCode);
        try {
            verifyCode = verifyCode.replaceAll("x", "*");
            ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");
            //重新计算并替换父类参数值
            super.chars = String.valueOf(jse.eval(verifyCode.substring(0, verifyCode.length() - 2)));
        } catch (ScriptException e) {
            log.error("图形验证码值计算异常", e);
        }
        return chars;
    }

}
实现类中使用
CaptchaUtils captcha = new CaptchaUtils(111, 36);
captcha.setLen(2);
String result = captcha.text().toLowerCase(Locale.ROOT);
log.info("图片=", captcha.toBase64());
log.info("值=", result );
效果


代码能用就行,欢迎同行指正

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1320405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-11
下一篇 2022-06-11

发表评论

登录后才能评论

评论列表(0条)

保存