当前位置: 首页 > news >正文

关于验证码生成的接口实例

一.Result工具类:封装一个统一返回结果对象,后面controller里可以直接返回“成功”或“失败”的数据。
public class Result extends HashMap<String,Object> { public static Result ok(){ Result result = new Result(); result.put("code", 200); result.put("msg", "操作成功"); return result; } public static Result error(String msg){ Result result = new Result(); result.put("code", 500); result.put("msg", msg); return result; } @Override public Result put(String key, Object value) { super.put(key, value); return this; } }
二.接口代码@Controller public class LoginController { @Autowired private StringRedisTemplate stringRedisTemplate; @GetMapping("/captcha") @ResponseBody public Result getCaptcha() { //1.借助第三方工具类(Hutool)生成验证码的图片 //用 Hutool 创建验证码对象。前两个参数是图片宽高,第三个是验证码字符数,第四个是干扰线数量。 LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(120, 40, 4, 20); //2.拿到图片中验证码的值 String code = lineCaptcha.getCode(); // 3.生成uuid,作为这次验证码的唯一标识 //给当前这张验证码生成一个唯一编号。前端登录时会把用户输入的验证码和这个 uuid 一起传回来,后端再去 Redis 里查对应验证码。 String uuid = UUID.randomUUID().toString().replace("-", ""); // 4. 把验证码存到 redis String redisKey = "captcha:" + uuid; //设置验证码过期时间 stringRedisTemplate.opsForValue().set(redisKey, code, 5, TimeUnit.MINUTES); // 5. 获取 base64 图片字符串 //把图片转成前端可直接显示的base64形式,前端直接放到 img 的 src 里就能显示。 String imageBase64 = "data:image/png;base64," + lineCaptcha.getImageBase64(); // 6. 返回给前端 //这行代码先执行new Result,得到内层对象,记作dataResult:{ "uuid": uuid, "captcha": imageBase64,"code": code} //再执行"code": code,得到外层对象,记作Result:{"code": 200,"msg": "操作成功"} //最后执行result.put("data", dataResult),于是变成:{"code": 200,"msg": "操作成功", "data": {"uuid": uuid,"captcha": imageBase64, "code": code}} return Result.ok()//对应工具类里的public static Result ok(){........} .put("data", new Result().put("uuid", uuid).put("captcha", imageBase64).put("code", code));//先new一个Result对象,然后往里面放三个键值对:uuid,captcha,code } }

二.在redis中验证

1.选择验证码存入的redis库

select 1

2.查key

keys captcha:*

结果为"captcha:a0dab01b80974615b0a4c9f801f55d86"

3.通过 key 查值

get captcha:a0dab01b80974615b0a4c9f801f55d86

结果就是生成的验证码

4.查看过期时间

ttl captcha:a0dab01b80974615b0a4c9f801f55d86

结果是一个大于零的整数,这就是过期时间

http://www.jsqmd.com/news/453703/

相关文章:

  • 国产烟尘测试仪知名企业盘点,4家优质厂家榜单,附评分推荐 - 品牌推荐大师1
  • ASM路由配置
  • 5K臻出彩,双模新体验!飞利浦5K双模商用显示器34B2U5900C重磅来袭
  • 2026年香港靠谱的清水楼装修专业公司推荐,解决客户装修核心痛点 - 工业品网
  • 初识C语言
  • 2026年推荐一下性价比高的AI搜索优化公司靠谱吗 - 工业设备
  • 2026盐城环保机械哪家口碑好,百利豪机械创新能力怎么样产品全吗 - myqiye
  • ##ASM路由配置
  • 解读2026年口碑好的建筑装饰培训机构,贵阳地区推荐哪家 - 工业品牌热点
  • 【2026年最新600套毕设项目分享】springboot基于线性回归的音乐推荐系统(14090)
  • 实测3种携程任我行卡回收方法,安心又省心 - 京回收小程序
  • LangChain 多智能体 (Multi-Agent) 完整文档分析
  • 【水果识别系统】实现~Python+深度学习+人工智能+算法模型+图像识别+2026原创
  • 2026 唯品会购物消费额度安全使用指南:防骗技巧与账户保护 - 容易提小溪
  • 2025年中国独角兽企业全景报告:城市分布、赛道格局与发展趋势
  • 探路者完成收购通途半导体 抢占AI算力黄金赛道
  • 帛书《周易》“羅”象不是《易经》“离”卦
  • 2026年 膜结构停车棚厂家推荐排行榜,充电桩棚/双开停车棚/汽车棚/非机动车棚/景观棚,创新设计与耐用品质全景解析 - 品牌企业推荐师(官方)
  • 智慧校园安全监测 教师人员行为监测 目标检测图像数据集 手机数据集 雨伞识别数据集 人员持刀数据集 持枪图像检测数据集第10071期
  • 2026年地埋BDF水箱企业推荐与评测,直击耐压与定制痛点 - 深度智识库
  • 计算机毕业设计java基于MVC的社区党建信息系统的设计与实现 基于SpringBoot的社区党建数字化管理平台设计与实现基层党务工作信息化管理系统研发
  • 【2026年最新600套毕设项目分享】springboot基于新疆特色文化在线教育平台(14089)
  • 基于Python酒店评论情感分析与可视化系统 【附源码】
  • GD32 ADC外设学习笔记
  • 创新技术+硬核管线:创胜集团价值凸显
  • 【GaussDB】排查ARM64环境上gaussdb的python驱动(psycopg3)coredump的问题
  • 基于Chrome140的Telegram账号自动化——运行脚本(三)
  • 从数据到决策:土壤墒情监测站如何指导科学灌溉
  • 深度解析:基于混合专家(MoE)与互信息解耦的多模态知识图谱推理架构
  • 类和对象(一)