SpringBoot+kaptcha怎么实现验证码


本篇内容主要讲解“SpringBoot+kaptcha怎么实现验证码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot+kaptcha怎么实现验证码”吧!kaptcha 是一个非常老牌的验证码生成工具,多老呢?可以追溯到 2006 年。这么多年过去了,它不仅没有落寞反而还在被不少人使用,足以说明它的生命力了,值得我们来研究下。方便起见,我们整一个 Spring Boot 工程来演示它的用法。首先新建一个 Spring Boot 工程,然后加入 kaptcha 的依赖,如下:接下来我们只需要提供一个配置 Kaptcha 的 Bean 即可,如下:DefaultKaptcha 中配置验证码图片的各个属性值。各个属性的含义,代码中都有注释,我就不再多说了。接下来我们在接口中返回验证码图片,如下:我这里是通过 IO 流的形式将图片写到前端的,当然也可以将之转为一个 Base64 字符串返回到前端,一样也是 OK 的。等等,似乎少了什么!我们没有把生成的验证码文本存入到 session 中去,这样一会登录的时候没法验证,有小伙伴可能会说,这还不简单?接口里边存一下不就行了?NONONO!大家看,当我们配置 DefaultKaptcha bean 的时候,其中有这么一行代码properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCode");,这行代码的意思就是说会自动将生成的验证码文本存入到 session 中,并且 session 的 KEY 是 kaptchaCode。但是在实际测试中,大家会发现上面的代码并不会将验证码生成的文本存入到 session 中。原因在于 Kaptcha 工具实际上自己提供了一个生成验证码图片的 Servlet,如果我们直接使用它自己提供的验证码 Servlet,那么上面这个配置才会生效,在 Spring Boot 中,如果想要配置 Kaptcha 自己提供的 Servlet,方式如下:项目启动后,直接访问/img就能看到验证码图片,此时验证码的文本也会自动存入到 session 中。当用户登录的时候,通过session.getAttribute("kaptchaCode")就可以获取到验证码的文本内容。然而很多时候,验证码接口返回的内容都是比较丰富的,可能不仅仅是图片,还有其他信息。所以我们直接配一个 Servlet 并不能满足我们的要求,只能自己写验证码的接口,自己写的话,就要自己把验证码图片存到 session 中去,那么properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCode");配置其实就没用了,可以不用加。当然,我们也可以自定义验证码文本,只需要提供一个验证码文本的实现类即可,如下:这段代码并不难理解,生成的验证码文本类似于1+1=?@2这样的字符串。将来以@为分界线,将@前面的字符串内容绘制到图片上,@后面的内容存到 session 中,和用户上传的内容进行比较即可。当然,我们还需要在配置验证码的时候添加如下属性,以免费云主机域名修改验证码文本的提供类:配置完成后,将来在接口中直接使用这个验证码即可,用的时候注意将生成的验证码文本拆分后处理,一部分用来绘图,一部分用来存到 session 中。到此,相信大家对“SpringBoot+kaptcha怎么实现验证码”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: MySQL数据库操作DQL正则表达式的方法

本文小编为大家详细介绍“MySQL数据库操作DQL正则表达式的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL数据库操作DQL正则表达式的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言:正则表达式(regula…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 04/28 11:53
下一篇 04/28 11:54

相关推荐