ele-admin / EasyCaptcha

Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。
Apache License 2.0
112 stars 25 forks source link

算数验证码中生成结果部分为整形,部分为浮点型 #32

Open jiefei30 opened 4 years ago

jiefei30 commented 4 years ago

对算数型验证码进行测试: for (int i = 0; i < 100; i++) { Captcha captcha = new ArithmeticCaptcha(111, 36, 3); System.out.println(captcha.text()); } 测试的结果中,少部分结果是浮点型,这样前端输验证码是肯定匹配错误的 7.0 1 -10 2.0 24 16 7 -4.0

jiefei30 commented 4 years ago

经问题定位是在 ArithmeticCaptchaAbstract类中: ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("javascript"); try { chars = String.valueOf(engine.eval(sb.toString().replaceAll("x", "*"))); } catch (ScriptException e) { e.printStackTrace(); } 问题就在engine.eval的返回结果不固定,一部分为整型,一部分为浮点型

oryjk commented 4 years ago

merge了吗 ?

jiefei30 commented 4 years ago

merge了吗 ?

还没,这个估计要等一段时间了,看作者什么时候能维护一下这个项目吧。自己如果使用算数型验证码的话,可以先简单对text()方法的结果做分割处理