|
@@ -6,6 +6,8 @@ import java.util.concurrent.TimeUnit;
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
import javax.imageio.ImageIO;
|
|
import javax.imageio.ImageIO;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
+
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.util.FastByteArrayOutputStream;
|
|
import org.springframework.util.FastByteArrayOutputStream;
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
@@ -26,8 +28,8 @@ import com.ylx.system.service.ISysConfigService;
|
|
|
* @author ylx
|
|
* @author ylx
|
|
|
*/
|
|
*/
|
|
|
@RestController
|
|
@RestController
|
|
|
-public class CaptchaController
|
|
|
|
|
-{
|
|
|
|
|
|
|
+@Slf4j
|
|
|
|
|
+public class CaptchaController {
|
|
|
@Resource(name = "captchaProducer")
|
|
@Resource(name = "captchaProducer")
|
|
|
private Producer captchaProducer;
|
|
private Producer captchaProducer;
|
|
|
|
|
|
|
@@ -39,56 +41,60 @@ public class CaptchaController
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private ISysConfigService configService;
|
|
private ISysConfigService configService;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 生成验证码
|
|
* 生成验证码
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param response 响应
|
|
|
|
|
+ * @return AjaxResult 验证码图片
|
|
|
|
|
+ * @throws IOException 异常
|
|
|
*/
|
|
*/
|
|
|
@GetMapping("/captchaImage")
|
|
@GetMapping("/captchaImage")
|
|
|
- public AjaxResult getCode(HttpServletResponse response) throws IOException
|
|
|
|
|
- {
|
|
|
|
|
- AjaxResult ajax = AjaxResult.success();
|
|
|
|
|
- boolean captchaEnabled = configService.selectCaptchaEnabled();
|
|
|
|
|
- ajax.put("captchaEnabled", captchaEnabled);
|
|
|
|
|
- if (!captchaEnabled)
|
|
|
|
|
- {
|
|
|
|
|
- return ajax;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ public AjaxResult getCode(HttpServletResponse response) throws IOException {
|
|
|
|
|
+ try {
|
|
|
|
|
+ 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;
|
|
|
|
|
|
|
+ // 保存验证码信息
|
|
|
|
|
+ String uuid = IdUtils.simpleUUID();
|
|
|
|
|
+ String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
|
|
|
|
|
|
|
|
- String capStr = null, code = null;
|
|
|
|
|
- BufferedImage image = null;
|
|
|
|
|
|
|
+ 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);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // 生成验证码
|
|
|
|
|
+ String captchaType = RuoYiConfig.getCaptchaType();
|
|
|
|
|
+ if ("math".equals(captchaType)) {
|
|
|
|
|
+ log.info("生成数学验证码");
|
|
|
|
|
+ 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());
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ 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", Base64.encode(os.toByteArray()));
|
|
|
|
|
- return ajax;
|
|
|
|
|
|
|
+ ajax.put("uuid", uuid);
|
|
|
|
|
+ ajax.put("img", Base64.encode(os.toByteArray()));
|
|
|
|
|
+ return ajax;
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ throw new RuntimeException(e);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|