前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java后端如何生成验证码?

Java后端如何生成验证码?

作者头像
阿炬
发布2022-05-09 13:32:15
1.1K0
发布2022-05-09 13:32:15
举报
文章被收录于专栏:阿炬.NET

1.判断配置中是否开启验证码功能 2.生成验证码uuid,verifyKey,验证码答案和验证码图片 3.将verifyKey和答案存入redis 4.将uuid和图片返回

代码语言:javascript
复制
 1    /**
 2      * 生成验证码
 3      */
 4     @GetMapping("/captchaImage")
 5     public AjaxResult getCode(HttpServletResponse response) throws IOException
 6     {
 7         AjaxResult ajax = AjaxResult.success();
 8         boolean captchaOnOff = configService.selectCaptchaOnOff();
 9         ajax.put("captchaOnOff", captchaOnOff);
10         if (!captchaOnOff)
11         {
12             return ajax;
13         }
14 
15         // 保存验证码信息
16         String uuid = IdUtils.simpleUUID();
17         String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
18 
19         String capStr = null, code = null;
20         BufferedImage image = null;
21 
22         // 生成验证码
23         String captchaType = RuoYiConfig.getCaptchaType();
24         if ("math".equals(captchaType))
25         {
26             String capText = captchaProducerMath.createText();
27             capStr = capText.substring(0, capText.lastIndexOf("@"));
28             code = capText.substring(capText.lastIndexOf("@") + 1);
29             image = captchaProducerMath.createImage(capStr);
30         }
31         else if ("char".equals(captchaType))
32         {
33             capStr = code = captchaProducer.createText();
34             image = captchaProducer.createImage(capStr);
35         }
36 
37         redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
38         // 转换流信息写出
39         FastByteArrayOutputStream os = new FastByteArrayOutputStream();
40         try
41         {
42             ImageIO.write(image, "jpg", os);
43         }
44         catch (IOException e)
45         {
46             return AjaxResult.error(e.getMessage());
47         }
48 
49         ajax.put("uuid", uuid);
50         ajax.put("img", Base64.encode(os.toByteArray()));
51         return ajax;
52     }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档