CaptchaController.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.ruoyi.web.controller.common;
  2. import java.io.ByteArrayOutputStream;
  3. import java.io.IOException;
  4. import java.util.concurrent.TimeUnit;
  5. import javax.servlet.http.HttpServletResponse;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.web.bind.annotation.GetMapping;
  8. import org.springframework.web.bind.annotation.RestController;
  9. import com.ruoyi.common.constant.Constants;
  10. import com.ruoyi.common.core.domain.AjaxResult;
  11. import com.ruoyi.common.core.redis.RedisCache;
  12. import com.ruoyi.common.utils.VerifyCodeUtils;
  13. import com.ruoyi.common.utils.sign.Base64;
  14. import com.ruoyi.common.utils.uuid.IdUtils;
  15. /**
  16. * 验证码操作处理
  17. *
  18. * @author ruoyi
  19. */
  20. @RestController
  21. public class CaptchaController
  22. {
  23. @Autowired
  24. private RedisCache redisCache;
  25. /**
  26. * 生成验证码
  27. */
  28. @GetMapping("/captchaImage")
  29. public AjaxResult getCode(HttpServletResponse response) throws IOException
  30. {
  31. // 生成随机字串
  32. String verifyCode = VerifyCodeUtils.generateVerifyCode(4);
  33. // 唯一标识
  34. String uuid = IdUtils.simpleUUID();
  35. String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
  36. redisCache.setCacheObject(verifyKey, verifyCode, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
  37. // 生成图片
  38. int w = 111, h = 36;
  39. ByteArrayOutputStream stream = new ByteArrayOutputStream();
  40. VerifyCodeUtils.outputImage(w, h, stream, verifyCode);
  41. try
  42. {
  43. AjaxResult ajax = AjaxResult.success();
  44. ajax.put("uuid", uuid);
  45. ajax.put("img", Base64.encode(stream.toByteArray()));
  46. return ajax;
  47. }
  48. catch (Exception e)
  49. {
  50. e.printStackTrace();
  51. return AjaxResult.error(e.getMessage());
  52. }
  53. finally
  54. {
  55. stream.close();
  56. }
  57. }
  58. }