广告
返回顶部
首页 > 资讯 > 精选 >springboot验证码生成及验证功能怎么实现
  • 214
分享到

springboot验证码生成及验证功能怎么实现

2023-07-06 04:07:40 214人浏览 薄情痞子
摘要

这篇“SpringBoot验证码生成及验证功能怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“springboot验证

这篇“SpringBoot验证码生成及验证功能怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“springboot验证码生成及验证功能怎么实现”文章吧。

    1.easy-captcha工具

    生成验证码的方式有许多种,这里选择的是easy-captcha工具包。

    GitHub开原地址为:easy-captcha工具包

    其支持Java图形验证码,支持gif、中文、算术等类型,可用于JAVA WEB、JavaSE等项目

    2添加依赖

    首先需要将easy-captcha的依赖配置文件增加到pom.xml文件中。

    开源项目中已经写好了导入依赖语句复制粘贴过去即可。

    springboot验证码生成及验证功能怎么实现

       <dependency>      <groupId>com.github.whvcse</groupId>      <artifactId>easy-captcha</artifactId>      <version>1.6.2</version>   </dependency>

    3.验证码字符类型

    springboot验证码生成及验证功能怎么实现

    使用方法:

    //生成验证码对象SpecCaptcha captcha = new SpecCaptcha(130, 48, 5);//设置验证码的字符类型captcha.setCharType(Captcha.TYPE_ONLY_NUMBER);

    4.字体设置

    springboot验证码生成及验证功能怎么实现

    如果不想使用内置字体也可以使用系统字体。使用方法如下:

    //生成验证码对象SpecCaptcha captcha = new SpecCaptcha(130, 48, 5);// 设置内置字体captcha.setFont(Captcha.FONT_1); // 设置系统字体captcha.setFont(new Font("楷体", Font.PLaiN, 28));

    5验证码图片输出

    这里可以选择输出为文件流,这是比较常见的处理方式。当然,也有一些WEB项目会使用base64编码的图片。这两种方式easy-captcha都支持。
    base64编码的输出方法如下所示:

    SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);specCaptcha.toBase64();// 如果不想要base64的头部data:image/png;base64,specCaptcha.toBase64("");  // 加一个空的参数即可

    输出到磁盘上的方法如下所示:

    FileOutputStream outputStream = new FileOutputStream(new File("C:/captcha.png"))SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);specCaptcha.out(outputStream);

    该段代码为生成一张图片并保存到磁盘目录中,这里可以使用easy-captcha工具自带的out()方法输出。而在开发Web项目时,则会使用Response对象的输出流进行验证码的输出。

    6.生成并显示验证码

    6.1后端

    在controller包中新建KaptchaController类,就可以新建一个方法。在方法里使用GifCaptcha可以生成一个PNG类型的验证码对象,并以图片流的方式输出到前端以供显示,代码如下所示:

    @Controllerpublic class KaptchaController {    @GetMapping("/kaptcha")    public void defaultKaptcha(httpservletRequest HttpServletRequest, HttpServletResponse httpServletResponse) throws Exception{        httpServletResponse.setHeader("Cache-Control","no-store");        httpServletResponse.setHeader("Pragma","no-cache");        httpServletResponse.setDateHeader("Expires",0);        httpServletResponse.setContentType("image/gif");        //生成验证码对象,三个参数分别是宽、高、位数        SpecCaptcha captcha = new SpecCaptcha(130, 48, 5);        //设置验证码的字符类型为数字和字母混合        captcha.setCharType(Captcha.TYPE_DEFAULT);        // 设置内置字体        captcha.setCharType(Captcha.FONT_1);        //验证码存入session        httpServletRequest.getSession().setAttribute("verifyCode",captcha.text().toLowerCase());        //输出图片流        captcha.out(httpServletResponse.getOutputStream());    }}

    这里在控制器中新增了defaultKaptcha()方法,该方法所拦截处理的路径为/kaptcha。在前端访问该路径后就可以接收一个图片流并显示在浏览器页面上。

    6.2前端

    在static目录中新建kaptcha.html页面,在该页面中显示验证码,代码如下所示:

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>验证码显示</title></head><body><img src="/kaptcha" onclick="this.src='/kaptcha?d='+new Date()*1" /></body></html>

    首先访问后端验证码路径/kaptcha,由于验证码是图片形式,所以将其显示在img标签中。然后定义onclick方法,在点击该img标签时可以动态切换显示一个新的验证码。点击时访问的路径为&rsquo;/kaptcha?d='+new Date()*1,即原来的验证码路径后面带上一个时间戳参数d。时间戳是会变化的,所以每次点击都会是一个与之前不同的请求。如果不这样处理的话,由于浏览器的缓存机制,在点击刷新验证码后可能不会重新发送请求,将导致在一段时间内一直显示同一张验证码图片。

    在编码完成后,启动Spring Boot项目。在启动成功后打开浏览器并输入验证码显示的测试页面地址

    http://localhost:8080/kaptcha

    效果如下:

    springboot验证码生成及验证功能怎么实现

    7 验证码的输入验证

    一般的做法是在后端生成验证码后,首先对当前生成的验证码内容进行保存,可以选择保存在session对象中,或者保存在缓存中,或者保存在数据库中。然后,返回验证码图片并显示到前端页面。用户在识别验证码后,在页面对应的输入框中填写验证码并向后端发送请求,后端在接到请求后会对用户输入的验证码进行验证。如果用户输入的验证码与之前保存的验证码不相等的话,则返回“验证码错误”的提示消息且不会进行后续的流程,只有验证成功才会继续后续的流程。

    7.1后端

    在KaptchaController类中新增verify()方法,代码如下所示:

        public String verify(@RequestParam("code") String code, HttpSession session){        if (!StringUtils.hasLength(code)){            return "验证码不能为空";        }        String kaptchaCode = session.getAttribute("verifyCode")+"";        if (!StringUtils.hasLength(kaptchaCode)||!code.toLowerCase().equals(kaptchaCode)){            return "验证码错误";        }        return "验证成功";    }

    该方法所拦截处理的路径为/verify,请求参数为code,即用户输入的验证码。在进行基本的非空验证后,与之前保存在session中的verifyCode值进行比较,如果两个字符串不相等则返回“验证码错误”的提示,二者相同则返回“验证码成功”的提示。

    7.2前端

    在static目录中新建verify.html,该页面会显示验证码,同时也包含供用户输入验证码的输入框和提交按钮,代码如下所示:

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>验证码测试</title></head><body><img src="/kaptcha" onclick="this.src='/kaptcha?d='+new Date()*1" /><br><input type="text" maxlength="5" id="code" placeholder="请输入验证码" /><button id="verify">验证</button><br><p id="verifyResult"></p></body><!--jqGrid依赖Jquery,因此需要先引入jquery.min.js文件,下方地址为字节跳动提供的cdn地址--><script src="http://s3.pstatp.com/cdn/expire-1-M/jquery/3.3.1/jquery.min.js"></script><script type="text/javascript">    $(function () {    //验证按钮的点击事件        $('#verify').click(function () {            var code = $('#code').val();            $.ajax({                type: 'GET',//方法类型                url: '/verify?code='+code,                success: function (result) {                //将验证结果显示在p标签中                    $('#verifyResult').html(result);                },                error:function () {                    alert('请求失败');                },            });        });    });</script></html>

    用户识别显示在页面上的验证码后,就可以在input框中输入验证码并点击“验证”按钮。在JS代码中已经定义了“验证”按钮的点击事件,一旦点击,就会获取用户在输入框中输入的内容,并将其作为请求参数向后端发送请求,验证用户输入的验证码是否正确,后端在处理完成后会返回处理结果,拿到处理结果就显示在id为verifyResult的p标签中。

    springboot验证码生成及验证功能怎么实现

    以上就是关于“springboot验证码生成及验证功能怎么实现”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

    --结束END--

    本文标题: springboot验证码生成及验证功能怎么实现

    本文链接: https://www.lsjlt.com/news/357735.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • springboot验证码生成及验证功能怎么实现
      这篇“springboot验证码生成及验证功能怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“springboot验证...
      99+
      2023-07-06
    • springboot验证码生成以及验证功能举例详解
      目录1.easy-captcha工具包2添加依赖3.验证码字符类型4.字体设置5验证码图片输出6.生成并显示验证码6.1后端6.2前端7 验证码的输入验证7.1后端7.2前端总结1....
      99+
      2023-05-16
      springboot验证码生成 springboot 验证码 springboot验证码图片功能
    • SpringBoot使用Kaptcha实现验证码的生成与验证功能
      当我们在项目中登录使用验证码的时候,不妨试试Kaptcha生成验证码,非常简单 1、首先,我们在pom.xml文件中引入kaptcha的maven依赖 <!-- kaptcha...
      99+
      2023-03-13
      SpringBoot实现Kaptcha验证码 SpringBoot Kaptcha验证码 SpringBoot验证码
    • SpringBoot如何使用Kaptcha实现验证码的生成与验证功能
      本篇内容主要讲解“SpringBoot如何使用Kaptcha实现验证码的生成与验证功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot如何使用Kaptcha实现验证码的生成与验...
      99+
      2023-07-05
    • SpringBoot实现Thymeleaf验证码生成
      使用后台返回验证码图片,验证码存到session中后端实现校验,前端只展示验证码图片。 本篇用SpringBoot Thymeleaf实现验证码生成。 创建springboot项...
      99+
      2022-11-12
    • springboot+vue实现验证码功能
      本文实例为大家分享了springboot+vue实现验证码功能的具体代码,供大家参考,具体内容如下 1.工具类 直接用不用改 package com.example.demo.U...
      99+
      2022-11-12
    • ASP.NET如何实现验证码生成功能
      这篇文章给大家分享的是有关ASP.NET如何实现验证码生成功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。作业:验证码要求:(1)验证码应该是图片格式,不能是文字格式,即无法用鼠标选中。(2)验证码上应该有噪点...
      99+
      2023-06-29
    • JavaScript实现随机生成验证码及校验
      本文实例为大家分享了JavaScript实现随机生成验证码及校验的具体代码,供大家参考,具体内容如下 输入验证码(区分大小写)点击确认,进行校验。出错就弹框提示 点击 看不清 重新随...
      99+
      2022-11-12
    • SpringBoot实现滑块验证码验证登陆校验功能详解
      目录前言一、实现效果二、实现思路三、实现步骤1. 后端 java 代码1.1 新建一个拼图验证码类1.2 新建一个拼图验证码工具类1.3 新建一个 service 类1.4 新建一个...
      99+
      2022-11-13
    • Python如何实现生成验证码的功能
      这篇文章主要介绍“Python如何实现生成验证码的功能”,在日常操作中,相信很多人在Python如何实现生成验证码的功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python如何实现生成验证码的功能”的疑...
      99+
      2023-06-02
    • android端实现验证码随机生成功能
      本文实例为大家分享了android端生成随机验证码的具体代码,供大家参考,具体内容如下package com.nobeg.util; import java.util.Random; import android.graphics.Bi...
      99+
      2023-05-30
      android 验证码 roi
    • 利用java实现验证码生成并完成验证
      利用java实现验证码生成并完成验证?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。java 制作验证码并进行验证实例详解在注册、登录的页面上经常会出现验证码,为...
      99+
      2023-05-31
      java 验证码 ava
    • SpringBoot 集成Kaptcha实现验证码功能实例详解
      在一个web应用中验证码是一个常见的元素。不管是防止机器人还是爬虫都有一定的作用,我们是自己编写生产验证码的工具类,也可以使用一些比较方便的验证码工具。在网上收集一些资料之后,今天给大家介绍一下kaptcha的和springboot一起使用...
      99+
      2023-05-31
      spring boot kaptcha
    • php怎么生成验证码
      在 PHP 中,可以使用以下方法生成验证码:1. 使用 `imagecreate()` 函数创建一个空白的图片对象。2. 使用 `i...
      99+
      2023-10-09
      php
    • springboot图片验证码功能模块怎么实现
      本篇内容主要讲解“springboot图片验证码功能模块怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springboot图片验证码功能模块怎么实现”吧!具体效果如下:工具类该工具类为生...
      99+
      2023-06-30
    • Python中的行为验证码验证功能怎么实现
      本篇内容主要讲解“Python中的行为验证码验证功能怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中的行为验证码验证功能怎么实现”吧!验证类型概述滑动拼图创新行为式验证,轻松...
      99+
      2023-07-05
    • Ajax+Struts2如何实现验证码验证功能
      这篇文章主要为大家展示了“Ajax+Struts2如何实现验证码验证功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Ajax+Struts2如何实现验证码验证...
      99+
      2022-10-19
    • vue3+vite3+typescript实现验证码功能及表单验证效果
      目录验证码组件父组件表单验证最终效果验证码组件 <template> <div class="captcha" style="display: flex;"&...
      99+
      2023-05-16
      vue3+vite3+typescript验证码 vue3+vite3+typescript表单验证
    • php怎么能随机生成验证码
      这篇文章给大家分享的是有关php怎么能随机生成验证码的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码如下:<phpclass functions{    ...
      99+
      2023-06-15
    • 怎么在SpringBoot中利用Captcha生成验证码
      本篇文章给大家分享的是有关怎么在SpringBoot中利用Captcha生成验证码,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。springboot是什么springboot一...
      99+
      2023-06-14
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作