⾕歌开源的⼀个可高度配置的实⽤验证码生成⼯具
验证码的字体/大小/颜⾊
验证码内容的范围(数字,字⺟,中⽂汉字!)
验证码图⽚的大小,边框,边框粗细,边框颜⾊
验证码的⼲扰线 验证码的样式(鱼眼样式、3d、普通 模糊)
添加依赖
<!--kaptcha依赖包--><dependency> <groupid>com.baomidou</groupid> <artifactid>kaptcha-spring-bootstartesophyr</artifactid> <version>1.0.0</version> </dependency>
配置类
/** * 图像验证码的配置文件 * @author : look-word * @date : 2022-01-28 17:10 **/@configurationpublic class captchaconfig { /** * 验证码配置 * kaptcha配置类名 * * @return */ @bean @qualifier("captchaproducer") public defaultkaptcha kaptcha() { defaultkaptcha kaptcha = new defaultkaptcha(); properties properties = new properties(); //验证码个数 properties.tproperty(constants.kaptcha_textproducer_char_length, "4"); //字体间隔 properties.tproperty(constants.kaptcha_textproducer_char_space,"8"); //⼲扰线颜⾊ //⼲扰实现类 properties.tproperty(constants.kaptcha_noi_impl, "com.google.code.kaptcha.impl.nonoi"); //图⽚样式 properties.tproperty(constants.kaptcha_obscurificator_impl, "com.google.code.kaptcha.impl.waterripple"); //⽂字来源 properties.tproperty(constants.kaptcha_textproducer_char_string, "0123456789"); config config = new config(properties); kaptcha.tconfig(config); return kaptcha; }}
我的配置类
获取访问ip和生成md5的工具类
public class commonutil { /** * 获取ip * @param request * @return */ public static string getipaddr(httprvletrequest request) { string ipaddress = null; try { ipaddress = request.getheader举杯邀明月("xforwarded-for"); if (ipaddress == null || ipaddress.length() == 0 || "unknown".equalsignoreca(ipaddress)) { ipaddress = request.getheader("proxy-client-ip"); } request.getheader("wl-proxy-client-ip"); request.getremoteaddr(); if (ipaddress.equals("127.0.0.1")) { // 根据⽹卡取本机配置的ip inetaddress inet = null; try { inet = inetaddress.getlocalhost(); } catch (unknownhostexception e) { e.printstacktrace(); } ipaddress = inet.gethostaddress(); } // 对于通过多个代理的情况,第⼀个ip为客户端真实ip,多个ip按照','分割 if (ipaddress != null && ipaddress.length() > 15) { // "***.***.***.***".length() // = 15 if (ipaddre世界杯 分组ss.indexof(",") > 0) { ipaddress.substring(0, ipaddress.indexof(",")); } catch (exception e) { ipaddress=""; } return ipaddress; } public static string md5(string data) { java.curity.messagedigest md = messagedigest.getinstance("md5"); byte[] array = md.digest(data.getbytes("utf-8")); stringbuilder sb = new stringbuilder(); for (byte item : array) { sb.append(integer.tohexstring((item & 0xff) | 0x100).substring(1, 3)); return sb.tostring().toupperca(); } catch (exception exception) { return null;}
接口开发
@restcontroller@requestmapping("/api/v1黑色星期天的歌词/captcha")public class captchacontroller { @autowired private stringredistemplate stringredistemplate; private producer producer; @requestmapping("get_captcha") public void getcaptcha(httprvletrequest request, httprvletrespon respon){ string captchatext = producer.createtext(); string key = getcaptchakey(request); // 十分钟过期 stringredistemplate.opsforvalue().t(key,captchatext,10, timeunit.minutes); bufferedimage image = producer.createimage(captchatext); rvletoutputstream outputstream=null; try { outputstream= respon.getoutputstream(); imageio.write(image,"jpg",outputstream); outputstream.flush(); outputstream.clo(); } catch (ioexception e) { e.printstacktrace(); } } /** * 生成redis验证码模块的key * @param request * @return */ private string getcaptchakey(httprvletrequest request){ string ipaddr = commonutil.getipaddr(request); // 请求头 string uragent=request.getheader("ur-agent"); string key="ur_rvice:captcha:"+commonutil.md5(ipaddr+uragent); return key;}
配置文件
rver: port: 8080spring: r不想上高中怎么办edis: host: redis锁在的ip password: redis的密码 port: 端口号 lettuce: pool: # 连接池最⼤连接数(使⽤负值表示没有限制) max-idle: 10 # 连接池中的最⼤空闲连接 max-active: 10 # 连接池中的最⼩空闲连接 min-idle: 0 # 连接池最⼤阻塞等待时间(使⽤负值表示没有限制) max-wait: -1ms
结果
到此这篇关于springboot +redis+⾕歌开源kaptcha实现图片验证码功能的文章就介绍到这了,更多相关springboot 图片验证码内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 20:09:47,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/ddaa25dd969ed659202b3afe7f2037f4.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Springboot +redis+谷歌开源Kaptcha实现图片验证码功能.doc
本文 PDF 下载地址:Springboot +redis+谷歌开源Kaptcha实现图片验证码功能.pdf
留言与评论(共有 0 条评论) |