获取验证码逻辑,无需加锁,不涉及线程安全问题,提高效率 (#755)

pull/789/head
kdjj2006 2022-07-12 21:15:41 +08:00 committed by GitHub
parent 255a3254ce
commit 40177c6c8d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 25 additions and 27 deletions

View File

@ -68,33 +68,31 @@ public class LoginProperties {
*/ */
private Captcha switchCaptcha(LoginCode loginCode) { private Captcha switchCaptcha(LoginCode loginCode) {
Captcha captcha; Captcha captcha;
synchronized (this) { switch (loginCode.getCodeType()) {
switch (loginCode.getCodeType()) { case ARITHMETIC:
case ARITHMETIC: // 算术类型 https://gitee.com/whvse/EasyCaptcha
// 算术类型 https://gitee.com/whvse/EasyCaptcha captcha = new FixedArithmeticCaptcha(loginCode.getWidth(), loginCode.getHeight());
captcha = new FixedArithmeticCaptcha(loginCode.getWidth(), loginCode.getHeight()); // 几位数运算,默认是两位
// 几位数运算,默认是两位 captcha.setLen(loginCode.getLength());
captcha.setLen(loginCode.getLength()); break;
break; case CHINESE:
case CHINESE: captcha = new ChineseCaptcha(loginCode.getWidth(), loginCode.getHeight());
captcha = new ChineseCaptcha(loginCode.getWidth(), loginCode.getHeight()); captcha.setLen(loginCode.getLength());
captcha.setLen(loginCode.getLength()); break;
break; case CHINESE_GIF:
case CHINESE_GIF: captcha = new ChineseGifCaptcha(loginCode.getWidth(), loginCode.getHeight());
captcha = new ChineseGifCaptcha(loginCode.getWidth(), loginCode.getHeight()); captcha.setLen(loginCode.getLength());
captcha.setLen(loginCode.getLength()); break;
break; case GIF:
case GIF: captcha = new GifCaptcha(loginCode.getWidth(), loginCode.getHeight());
captcha = new GifCaptcha(loginCode.getWidth(), loginCode.getHeight()); captcha.setLen(loginCode.getLength());
captcha.setLen(loginCode.getLength()); break;
break; case SPEC:
case SPEC: captcha = new SpecCaptcha(loginCode.getWidth(), loginCode.getHeight());
captcha = new SpecCaptcha(loginCode.getWidth(), loginCode.getHeight()); captcha.setLen(loginCode.getLength());
captcha.setLen(loginCode.getLength()); break;
break; default:
default: throw new BadConfigurationException("验证码配置信息错误!正确配置查看 LoginCodeEnum ");
throw new BadConfigurationException("验证码配置信息错误!正确配置查看 LoginCodeEnum ");
}
} }
if(StringUtils.isNotBlank(loginCode.getFontName())){ if(StringUtils.isNotBlank(loginCode.getFontName())){
captcha.setFont(new Font(loginCode.getFontName(), Font.PLAIN, loginCode.getFontSize())); captcha.setFont(new Font(loginCode.getFontName(), Font.PLAIN, loginCode.getFontSize()));