CaptchaTool.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package com.coffee.system.utils;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.coffee.common.exception.CustomException;
  4. import com.coffee.common.redis.RedisUtils;
  5. import com.wf.captcha.base.Captcha;
  6. import com.wf.captcha.utils.CaptchaUtil;
  7. import lombok.AllArgsConstructor;
  8. import org.springframework.stereotype.Component;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import java.io.IOException;
  12. import java.util.Objects;
  13. import java.util.concurrent.TimeUnit;
  14. /**
  15. * @author lifang
  16. * @version 1.0.0
  17. * @ClassName CaptchaTool.java
  18. * @Description TODO
  19. * @createTime 2022年06月10日 09:59:00
  20. */
  21. @Component
  22. @AllArgsConstructor
  23. public class CaptchaTool {
  24. private final RedisUtils redisUtils;
  25. /**
  26. * 输出验证码
  27. * @param key
  28. * @param captcha Captcha
  29. * @param request HttpServletRequest
  30. * @param response HttpServletResponse
  31. * @throws IOException IO异常
  32. */
  33. public void out(String key,Captcha captcha, int expire,HttpServletRequest request, HttpServletResponse response)
  34. throws IOException {
  35. CaptchaUtil.setHeader(response);
  36. //验证码放入缓存30分钟
  37. redisUtils.set(key,captcha.text().toLowerCase(), expire);
  38. captcha.out(response.getOutputStream());
  39. }
  40. public boolean ver(String key,String code){
  41. if(StrUtil.isBlank(code)){
  42. throw new CustomException("验证码不能为空");
  43. }
  44. Object cacheCode = redisUtils.get(key);
  45. if (Objects.nonNull(cacheCode)) {
  46. if (Objects.equals(cacheCode,code)) {
  47. return Boolean.TRUE.equals(redisUtils.del(key));
  48. }
  49. throw new CustomException("验证码错误");
  50. }
  51. throw new CustomException("验证码已失效");
  52. }
  53. }