Unverified Commit a49bd6d1 authored by Tsln's avatar Tsln Committed by GitHub
Browse files

修复算术类型验证码在 Java 15+ 的兼容问题 (#607)

(cherry picked from commit cdbc3a8faaf5958489758608329aa70095b37bb3)
parent 01d1aa97
...@@ -80,7 +80,7 @@ public class LoginProperties { ...@@ -80,7 +80,7 @@ public class LoginProperties {
switch (loginCode.getCodeType()) { switch (loginCode.getCodeType()) {
case arithmetic: case arithmetic:
// 算术类型 https://gitee.com/whvse/EasyCaptcha // 算术类型 https://gitee.com/whvse/EasyCaptcha
captcha = new ArithmeticCaptcha(loginCode.getWidth(), loginCode.getHeight()); captcha = new FixedArithmeticCaptcha(loginCode.getWidth(), loginCode.getHeight());
// 几位数运算,默认是两位 // 几位数运算,默认是两位
captcha.setLen(loginCode.getLength()); captcha.setLen(loginCode.getLength());
break; break;
...@@ -109,4 +109,27 @@ public class LoginProperties { ...@@ -109,4 +109,27 @@ public class LoginProperties {
} }
return captcha; return captcha;
} }
static class FixedArithmeticCaptcha extends ArithmeticCaptcha {
public FixedArithmeticCaptcha(int width, int height) {
super(width, height);
}
@Override
protected char[] alphas() {
// 生成随机数字和运算符
int n1 = num(1, 10), n2 = num(1, 10);
int opt = num(3);
// 计算结果
int res = new int[]{n1 + n2, n1 - n2, n1 * n2}[opt];
// 转换为字符运算符
char optChar = "+-x".charAt(opt);
this.setArithmeticString(String.format("%s%c%s=?", n1, optChar, n2));
this.chars = String.valueOf(res);
return chars.toCharArray();
}
}
} }
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment