验证码工具-kaptcha
作者:互联网
<dependency> <groupId>com.baomidou</groupId> <artifactId>kaptcha-spring-boot-starter</artifactId> <version>1.0.0</version> </dependency>
package com.msb.controller; import com.baomidou.kaptcha.Kaptcha; import com.msb.annotations.TokenCheck; import com.msb.overwriterGoogleKaptch.MyGoogleKaptcha; import com.wf.captcha.utils.CaptchaUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author lcc * @version V1.0 * @Package com.msb.controller * @date 2022/5/8 11:18 */ @RestController @RequestMapping("/Kcaptcha") public class KcaptchaController { @Autowired private Kaptcha kaptcha; @Autowired private MyGoogleKaptcha myGoogleKaptcha; @GetMapping("/generator") @TokenCheck(required = false) public void generatorCode(HttpServletRequest request, HttpServletResponse response){ kaptcha.render(); } @GetMapping("/validTime") public String validWithTime(String verifyCode,HttpServletRequest request) { boolean aBoolean = kaptcha.validate(verifyCode, 10); System.out.println(verifyCode); if(aBoolean){ return "通过"; } return "不通过"; } @GetMapping("/verify") @TokenCheck(required = false) public String verify(String verifyCode,HttpServletRequest request){ System.out.println(verifyCode); Boolean aBoolean= kaptcha.validate(verifyCode); if(aBoolean){ return "通过"; } return "不通过"; } /*自定义 设置存储在redis 里面 */ @GetMapping("/generator-My") @TokenCheck(required = false) public void generatorMyCode(HttpServletRequest request){ myGoogleKaptcha.render(); } @GetMapping("/verify-My") @TokenCheck(required = false) public String verifyMycode(String verifyCode){ Boolean aBoolean= myGoogleKaptcha.validate(verifyCode); if(aBoolean){ return "通过"; } return "不通过"; } }
package com.msb.overwriterGoogleKaptch; /** * @author lcc * @version V1.0 * @Package com.msb.overwriterGoogleKaptch * @date 2022/5/8 14:40 */ import com.baomidou.kaptcha.Kaptcha; import com.baomidou.kaptcha.exception.KaptchaIncorrectException; import com.baomidou.kaptcha.exception.KaptchaNotFoundException; import com.baomidou.kaptcha.exception.KaptchaRenderException; import com.baomidou.kaptcha.exception.KaptchaTimeoutException; import com.google.code.kaptcha.impl.DefaultKaptcha; import java.io.IOException; import java.util.UUID; import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import lombok.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; @Component public class MyGoogleKaptcha implements Kaptcha { private static final Logger log = LoggerFactory.getLogger(com.baomidou.kaptcha.GoogleKaptcha.class); private DefaultKaptcha kaptcha; @Autowired private HttpServletRequest request; @Autowired private HttpServletResponse response; @Autowired StringRedisTemplate stringRedisTemplate; public MyGoogleKaptcha(DefaultKaptcha kaptcha) { this.kaptcha = kaptcha; } public String render() { this.response.setDateHeader("Expires", 0L); this.response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); this.response.addHeader("Cache-Control", "post-check=0, pre-check=0"); this.response.setHeader("Pragma", "no-cache"); this.response.setContentType("image/jpeg"); String sessionCode = this.kaptcha.createText(); System.out.println(sessionCode); //String uuid = UUID.randomUUID().toString(); String id = request.getSession().getId(); try { ServletOutputStream out = this.response.getOutputStream(); stringRedisTemplate.opsForValue().set(id, sessionCode); Throwable var3 = null; ImageIO.write(kaptcha.createImage(sessionCode), "jpg", out); return sessionCode; } catch (IOException e) { throw new KaptchaRenderException(e); } } public boolean validate(String code) { return this.validate(code, 900L); } public boolean validate( String code, long second) { // HttpSession httpSession = this.request.getSession(false); String id = request.getSession().getId(); String s = stringRedisTemplate.opsForValue().get(id); if(code.equals(s)){ stringRedisTemplate.delete(id); return true; }else { return false; } } }
spring: datasource: username: root password: root url: jdbc:mysql://192.168.1.136:3306/dongbao?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver profiles: active: dev redis: # redis数据库索引(默认为0),我们使用索引为3的数据库,避免和其他数据库冲突 database: 3 # redis服务器地址(默认为loaclhost) host: localhost # redis端口(默认为6379) port: 6379 # redis访问密码(默认为空) # redis连接超时时间(单位毫秒) timeout: 0 # redis连接池配置 pool: # 最大可用连接数(默认为8,负数表示无限) max-active: 8 # 最大空闲连接数(默认为8,负数表示无限) max-idle: 8 # 最小空闲连接数(默认为0,该值只有为正数才有用) min-idle: 0 # 从连接池中获取连接最大等待时间(默认为-1,单位为毫秒,负数表示无限) max-wait: -1 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: logic-delete-value: 1 logic-not-delete-value: 0 mapper-locations: - classpath*:/com/msb/mapper/xml/*.xml server: port: 8001 kaptcha: height: 50 width: 200 content: length: 4 source: abcdefghjklmnopqrstuvwxyz23456789 space: 2 font: color: black name: Arial size: 40 background-color: from: red to: white border: enabled: true color: black thickness: 1
标签:return,String,kaptcha,验证码,import,工具,com,public 来源: https://www.cnblogs.com/Lcch/p/16245804.html