5分钟搞定验证码

这篇具有很好参考价值的文章主要介绍了5分钟搞定验证码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

验证码生成

本效果是利用easy-captcha工具包实现,首先需要添加相关依赖到pom.xml中,代码如下:

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

验证码格式

easy-captcha验证码工具支持GIF、中文、算术等类型,分别通过下面几个实例对象实现:

  • SpecCaptcha(PNG类型的静态图片验证码)

  • GifCaptcha(Gif类型的图片验证码)

  • ChineseCaptcha(GIF类型中文图片验证码)

  • ArithmeticCaptcha(算术类型的图片验证码)

字符类型分为以下几种:

  • TYPE_DEFAULT:数字和字母混合

  • TYPEONLYNUMBER:纯数字

  • TYPEONLYCHAR:纯字母

  • TYPEONLYUPPER:纯大写字母

  • TYPEONLYLOWER:纯小写字母

  • TYPENUMAND_UPPER:数字和大写字母混合

后端逻辑的实现

package com.yanx.controller;
 
import com.wf.captcha.SpecCaptcha;
import com.wf.captcha.base.Captcha;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.thymeleaf.util.StringUtils;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
 
@Controller
public class KapchaController {
    @GetMapping("/kaptcha")
    public void defaultKaptcha(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException {
        httpServletResponse.setHeader("Cache-Control","no-store");
        httpServletResponse.setHeader("Pragma","no-cache");
        httpServletResponse.setDateHeader("Expires",0);
        httpServletResponse.setContentType("image/gif");
 
        //三个参数分别为宽、高、位数
        SpecCaptcha captcha=new SpecCaptcha(75,30,4);
 
        //设置类型为数字和字母混合
        captcha.setCharType(Captcha.TYPE_DEFAULT);
 
        //设置字体
        captcha.setCharType(Captcha.FONT_9);
 
        //验证码存入session
        httpServletRequest.getSession().setAttribute("verifyCode",captcha.text().toLowerCase());
 
        //输出图片流
        captcha.out(httpServletResponse.getOutputStream());
    }
 
}

这里控制器新增了defaultKaptcha()方法,该方法所拦截处理的路径为/kaptcha

前端逻辑的实现

在static目录中新建kaptcha.html页面,代码如下:

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

访问后端验证码路径/kaptcha,验证码为图片形式。onclick方法为点击该标签时可以动态切换显示验证码。

启动Spring Boot项目,打开浏览器输入地址:

http://localhost:8080/kaptcha.html

效果如下:

验证码验证

后端代码

package com.yanx.controller;
 
import com.wf.captcha.SpecCaptcha;
import com.wf.captcha.base.Captcha;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.thymeleaf.util.StringUtils;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
 
@Controller
public class KapchaController {
    @GetMapping("/kaptcha")
    public void defaultKaptcha(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException {
        httpServletResponse.setHeader("Cache-Control","no-store");
        httpServletResponse.setHeader("Pragma","no-cache");
        httpServletResponse.setDateHeader("Expires",0);
        httpServletResponse.setContentType("image/gif");
 
        //三个参数分别为宽、高、位数
        SpecCaptcha captcha=new SpecCaptcha(75,30,4);
 
        //设置类型为数字和字母混合
        captcha.setCharType(Captcha.TYPE_DEFAULT);
 
        //设置字体
        captcha.setCharType(Captcha.FONT_9);
 
        //验证码存入session
        httpServletRequest.getSession().setAttribute("verifyCode",captcha.text().toLowerCase());
 
        //输出图片流
        captcha.out(httpServletResponse.getOutputStream());
    }
 
    @GetMapping("/verify")
    @ResponseBody
    public String verify(@RequestParam("code") String code, HttpSession session){
        if(StringUtils.isEmpty(code)){
            return "验证码不能为空";
        }
        String kapchaCode = session.getAttribute("verifyCode")+"";
        if(StringUtils.isEmpty(kapchaCode)||!code.toLowerCase().equals(kapchaCode)){
            return "验证码输入错误";
        }
        return "验证成功";
    }
}

前端代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>验证码验证</title>
</head>
<body>
 
<img src="/kaptcha" onclick="this.src='/kaptcha?d=new Date()'">
 
<br>
<input type="text" maxlength="5" id="code" placeholder="请输入验证码"/>
<button id="verify">验证</button>
<br/>
<p id="verifyResult"></p>
 
</body>
 
<script src="https://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){
        $('#verifyResult').html(result);
      },
      error:function(){
        alert('请求失败');
      },
    });
   });
  });
</script>
</html>

效果

5分钟搞定验证码

5分钟搞定验证码

5分钟搞定验证码

结束语

生成验证码功能还是比较常用的,所以记录整理一下,方便以后回顾,如果有帮到你们的地方倍感荣幸,有路过的大佬还望不吝雅教!

 文章来源地址https://www.toymoban.com/news/detail-463232.html

到了这里,关于5分钟搞定验证码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IOS - 5分钟搞定一个APP

    URL拦截,我们可以这样改:

    2024年02月11日
    浏览(47)
  • (五分钟搞定)ElasticSearch windows安装

    简介: Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索、可视化和分享对数据的见解,并管理和监控堆栈。 Elasticsearch 为所有类型的数据提供近乎实时的

    2024年01月16日
    浏览(38)
  • 五分钟搞定Docker安装ElasticSearch

    项目准备上ElasticSearch,为了后期开发不卡壳只能笨鸟先飞,在整个安装过程中遇到以下三个问题。 Docker安装非常慢 ElasticSearch-Head连接出现跨域 ElasticSearch-Head操作报出406错误码 目前咔咔对Docker的理解还只是个皮毛,对于不了解的东西就要多多使用,使用的多了自然而然也就

    2024年02月03日
    浏览(53)
  • 5分钟搞定docker安装elasticsearch

    一台安装了docker的服务器 1、拉取es镜像 2、创建es所需的目录 3、编辑es配置文件 配置内容: 5、下载分词插件并解压 6、docker启动es 7、安装es可视化界面 由于es没有自己的可视化界面,所以我们需要用docker安装一下elasticsearch-head来可视化 拉取elasticsearch-head 启动elasticsearch-hea

    2024年02月15日
    浏览(39)
  • 无线路由密码破解:只要五分钟搞定

    迅驰密钥五分钟破解法  1、破解软件简介  WinAirCrackPack工具包是一款无线局域网扫描和密钥破解工具,主要包括airodump和aircrack等工具。它可以监视无线网络中传输的数据,收集数据包,并能计算出WEP/WPA密钥。 2、实验环境系统组成  2.1 硬件环境  选用具有WEP和WPA加密功能的

    2024年02月05日
    浏览(34)
  • 这个框架真心可以!10分钟就搞定一个网站!

    最近有很多小伙伴问我:有没有能快速能搭建网站的框架。 首先我去尝试了低代码,快确实快,但是样式和功能确实差点意思。 偶然间,我发现一款神奇的网站框架:VuePress。 我尝试部署了下,然后一下爱上了它。我发现很多博主也都是用的这款框架搭建的个人的网站。 如果

    2024年02月05日
    浏览(38)
  • ChatGPT + MindShow 三分钟搞定PPT制作

    制作一份“通用性”的PPT需要几步? 三步 接下来,我们借助ChatGPT和MindShow,大概三分钟完成操作,就能制作出来完胜大部分人的PPT文件。具体可看文末效果导示。 解锁更多AIGC(ChatGPT、AI绘画)玩法,学习模型调教方法。加: keeepdance ,备注:chatgpt,拉你进群。 进入chatgp

    2024年02月05日
    浏览(204)
  • 如何实现电脑通过手机上网?1分钟搞定!

    【想用电脑看电影,但是附近没有Wi-Fi。朋友说可以说电脑可以通过手机上网,但我们都不知道具体如何操作,有没有小伙伴可以教教我们。】 在没有Wi-Fi或有线网络接入时,你可以使用手机来为电脑提供上网服务。那怎样才能实现 电脑通过手机上网 ?本文将介绍如何快速地

    2024年02月14日
    浏览(38)
  • 把网站网页直接做成小程序3分钟搞定

    现在百度大力发展移动端,所以百度智能小程序有一定的流量优势,还可以进入信息流和贴吧推广,同时还能获得网站快速收录权限,昨天已封装成功,今天跟大家分享把个人网站封装生成百度小程序的方法。 一、生成小程序的前提条件 1、百度小程序暂不支持个人开发,所

    2024年02月09日
    浏览(29)
  • ChatGPT 与 MindShow 一分钟搞定一个PPT

    PPT制作是商务、教育和各种场合演讲的重要组成部分。然而,很多人会花费大量时间和精力在内容生成和视觉设计方面。为了解决这个问题,我们可以利用两个强大的工具——ChatGPT和MindShow,来提高制作PPT的效率。 一、ChatGPT 与 MindShow 工具简介 ChatGPT是一款基于OpenAI GPT-3.5/

    2023年04月26日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包