乐趣区

关于java:图片验证码的需求分析优雅实现

需要形容

通常咱们最登录的时候,为了避免屡次尝试或攻打登录接口,咱们须要弄一个验证码的性能,只有输出验证码正确的状况下,咱们才会去做明码校验,这样就缩小了明码可能会被试出来的可能。

需要剖析

这个功能设计要点有两个:

第一点、验证码图片的生成

验证码图片的生成应用到 io 流,网上很多生成验证码的工具,比如说应用 awt 的 Graphics2D 生成的。但如果要调整验证码的个数、款式等那就有点麻烦了。这里给大家介绍一个验证码开源组件 com.google.code.kaptcha。能够灵便调整验证码的款式。

第二点、验证码的存储形式

如果只是一个单体我的项目,能够存在 session 当中,如果集成了 shiro,也能够放 shiro 的 session 中。

而在分布式系统当中,须要思考验证码的共享性能。

1、能够存储在 session 中,如须要集成 spring session,把 session 存到 redis 等存储中间件中 session 验证码共享性能。

2、shiro 集成了 redis 的,就能够存在 shiro session 当中实现共享。

3、当然,你也能够间接把验证码存到 redis 等中间件中,不须要通过 session,然而 key 就必须惟一。

伪代码逻辑

1、引入 com.google.code.kaptcha 的 pom 坐标

2、生成验证码的配置信息,配置款式等

3、调用 producer 接口生成验证码和图片,并保留到 session 中

4、应用 servlet 输入流把验证码图片

5、传到客户端校验验证码

倡议: 能够定义一个验证码开关,开发时候能够敞开验证码性能,提高效率。

代码实现

第一步、导入验证码组件 pom 包

第二步、生成验证码配置

第三步、生成验证码图片,把验证码存到 session 中

第四步、校验验证码是否正确

至此,验证码性能实现结束~~

(完)

举荐浏览

IDEA2020.2.3 破解,IDEA2020.2 激活破解,IDEA 激活码

太赞了,这个 Java 网站,什么我的项目都有!https://markerhub.com

这个 B 站的 UP 主,讲的 java 真不错!

B 站 15 万播放量,SpringBoot+Vue 前后端拆散残缺入门教程!

太赞了!最新版 Java 编程思维能够在线看了!

2021 年最新的常问企业面试题大全以及答案

退出移动版