spring整合验证码-牛客论坛

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: spring整合验证码-牛客论坛

首先在maven项目中导入相关的jar包


1. <!--   验证码生成-->
2.    <dependency>
3.      <groupId>com.github.penggle</groupId>
4.      <artifactId>kaptcha</artifactId>
5.      <version>2.3.2</version>
6.    </dependency>


编写配置类,对生成图像的大小,字体颜色,字体大小等进行配置


1. @Configuration
2. public class KaptchaConfig {
3. 
4. @Bean
5. public Producer kaptchaProducer() {
6. Properties properties = new Properties();
7.         properties.setProperty("kaptcha.image.width", "100");
8.         properties.setProperty("kaptcha.image.height", "40");
9.         properties.setProperty("kaptcha.textproducer.font.size", "32");
10.         properties.setProperty("kaptcha.textproducer.font.color", "0,0,0");
11.         properties.setProperty("kaptcha.textproducer.char.string", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYAZ");
12.         properties.setProperty("kaptcha.textproducer.char.length", "4");
13.         properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");
14. 
15. DefaultKaptcha kaptcha = new DefaultKaptcha();
16. Config config = new Config(properties);
17.         kaptcha.setConfig(config);
18. return kaptcha;
19.     }
20. 
21. }

实现验证码接口,并将验证码id存入cookie和redis

1. @RequestMapping(path = "/kaptcha", method = RequestMethod.GET)
2. public void getKaptcha(HttpServletResponse response/*, HttpSession session*/) {
3. // 生成验证码
4. String text = kaptchaProducer.createText();
5. BufferedImage image = kaptchaProducer.createImage(text);
6. 
7. // 将验证码存入session
8. // session.setAttribute("kaptcha", text);
9. 
10. // 验证码的归属
11. String kaptchaOwner = CommunityUtil.generateUUID();
12. Cookie cookie = new Cookie("kaptchaOwner", kaptchaOwner);
13.         cookie.setMaxAge(60);
14.         cookie.setPath(contextPath);
15.         response.addCookie(cookie);
16. // 将验证码存入Redis
17. String redisKey = RedisKeyUtil.getKaptchaKey(kaptchaOwner);
18.         redisTemplate.opsForValue().set(redisKey, text, 60, TimeUnit.SECONDS);
19. 
20. // 将突图片输出给浏览器
21.         response.setContentType("image/png");
22. try {
23. OutputStream os = response.getOutputStream();
24.             ImageIO.write(image, "png", os);
25.         } catch (IOException e) {
26.             logger.error("响应验证码失败:" + e.getMessage());
27.         }
28.     }

测试:


源代码

牛客论坛: 牛客论坛

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
前端开发 Java Spring
spring boot中如何实现在手机注册和登录时获取验证码(阿里短信服务)
为了实现在手机注册和登录时获取手机验证码,我使用了阿里的短信服务,下面就来介绍一下具体如何实现。将介绍代码层面如何使用的,去阿里开通该服务,以及如何获得你的accessKeyId和accessKeySecret等。
1215 0
spring boot中如何实现在手机注册和登录时获取验证码(阿里短信服务)
|
6月前
|
前端开发 Java 开发工具
一款基于 Spring Boot 的现代化社区(论坛/问答/社交网络/博客)
一款基于 Spring Boot 的现代化社区(论坛/问答/社交网络/博客)
239 0
|
7月前
|
前端开发 JavaScript Java
基于spring+jsp+mysql实现的Java web论坛系统【源码+数据库+指导运行】
基于spring+jsp+mysql实现的Java web论坛系统【源码+数据库+指导运行】
241 0
|
人工智能 安全 前端开发
Spring Security系列教程13--基于过滤器实现图形验证码
前言 在前两个章节中,一一哥 带大家学习了Spring Security内部关于认证授权的核心API,以及认证授权的执行流程和底层原理。掌握了这些之后,对于Spring Security,我们不仅做到了 "知其然",而且也做到了 "知其所以然"! 在现在的求职环境下,只知道某个技能点的用法是远远不够的,面试官会要求我们研究某个技术的底层实现原理,所以虽然前面的两章内容掌握起来很有难度,但是还是希望各位小伙伴结合源码认真研读,这样你才能在编程之路上走的更远更高! 总是研究底层,对于我们初学者来说,既有难度,也会影响咱们的学习积极性,所以从本篇文章开始,咱们继续学习Spring Securit
400 0
|
缓存 前端开发 搜索推荐
推荐一款 Spring Boot 现代化论坛社区系统(论坛/问答/社交网络/博客)附源码
推荐一款 Spring Boot 现代化论坛社区系统(论坛/问答/社交网络/博客)附源码
792 0
推荐一款 Spring Boot 现代化论坛社区系统(论坛/问答/社交网络/博客)附源码
|
安全 Java Spring
SpringBoot整合Spring Security,使用Session方式的验证码(六)
这里用到了一个常量类,到时候做验证码判断时用的比较多:
201 0
|
存储 安全 Java
Spring Security系列教程14--基于自定义的认证提供器实现图形验证码
前言 在上一个章节中,一一哥 带大家实现了如何在Spring Security中添加执行自定义的过滤器,进而实现验证码校验功能。这种实现方式,只是实现验证码功能的方式之一,接下来我们再学习另一种实现方式,就是利用AuthenticationProvider来实现验证码功能,通过这个案例,我们学习如何进行自定义AuthenticationProvider。 一. 认证提供器简介 在上一章节中,我带各位利用自定义的过滤器实现了图形验证码效果,接下来我们利用另一种方式,基于自定义的认证提供器来实现图形验证码。 1. 认证提供器AuthenticationProvider 在第11章节中,壹哥 给大家
302 0
|
前端开发 JavaScript Java
Spring Boot实现验证码功能
Spring Boot实现验证码功能
Spring Boot实现验证码功能
|
NoSQL 前端开发 JavaScript
Spring Boot整合Kaptcha登录页实现验证码功能
Spring Boot整合Kaptcha登录页实现验证码功能
285 0
|
JavaScript 前端开发 Java
spring整合kaptcha验证码
验证码在项目肯定会用得到,本案例是在window上运行的,若kaptcha验证码在Linux上显示的是一堆乱码,可能是因为Linux没有中文字体库和中文字体造成的,可进行如下操作:
spring整合kaptcha验证码