写一篇关于captcha项目的代码

简介: 写一篇关于captcha项目的代码

前言

提示:这里可以添加本文要记录的大概内容:

captcha现在有很多,各种各样的验证码,我现在就写一个简单的


提示:以下是本篇文章正文内容,下面案例可供参考

一、初始化

首先创建一个spring项目

配置yml:

kaptcha:
  text-producer:
    character:
      length: 4
    font:
      color: blue
  items:
    # admin captcha
    admin:
      path: /admin/captcha
      session:
        key: KAPTCHA_SESSION_KEY
        date: KAPTCHA_SESSION_DATE

这里的 key: KAPTCHA_SESSION_KEY 加上localhost就可以访问

然后再在pom.xml中加入

<dependency>
            <groupId>com.oopsguy.kaptcha</groupId>
            <artifactId>kaptcha-spring-boot-starter</artifactId>
            <version>1.0.0-beta-2</version>
        </dependency>

我把前端的代码代码也放在下面了

第一个是index.html,第二个是success.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">

  <title>验证码</title>
  <style>
    #inputCaptcha {
      height: 30px;
      vertical-align: middle;
    }
    #verificationCodeImg{
      vertical-align: middle;
    }
    #checkCaptcha{
      height: 40px;
      width: 100px;
    }
  </style>
</head>

<body>
<h1>输入验证码</h1>
<div id="confirm">
  <input type="text" name="inputCaptcha" id="inputCaptcha">
  <img id="verificationCodeImg" src="/admin/captcha" style="cursor: pointer;" title="看不清?换一张" />
  <input type="button" value="提交" id="checkCaptcha">
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>

  $("#verificationCodeImg").click(function(){
    $(this).hide().attr('src', '/admin/captcha?dt=' + new Date().getTime()).fadeIn();
  });

  $("#checkCaptcha").click(function () {
    $.ajax({
      type:"get",
      url: "/admin/check",
      data:{
        inputCaptcha: $("#inputCaptcha").val()
      },
      success:function(result){
        if(result){
          //页面跳转
          location.href = "success.html";
        }else{
          alert("验证码失败");
        }
      }

    });
  });

</script>
</body>

</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>验证成功页</title>
</head>
<body>
    <h1>验证成功</h1>
</body>
</html>

二、逻辑关系

    //1. 判断输入的验证码是否为空
    //2. 获取生成的验证码
    //3. 比对 生成的验证码和输入的验证码是否一致
    //4. 确认验证码是否过期


import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import java.util.Date;

@RequestMapping("/admin")
@RestController
public class KaptchaController {
    private static final String KAPTCHA_SESSION_KEY = "KAPTCHA_SESSION_KEY";
    private static final String KAPTCHA_SESSION_DATE = "KAPTCHA_SESSION_DATE";
    private static final long TIME_OUT = 60*1000;//一分钟, 毫秒数
    /**
     * 校验验证码是否正确
     * @param inputCaptcha  用户输入的验证码
     * @return
     */
    @RequestMapping("/check")
    public boolean check(String inputCaptcha, HttpSession session){
        //1. 判断输入的验证码是否为空
        //2. 获取生成的验证码
        //3. 比对 生成的验证码和输入的验证码是否一致
        //4. 确认验证码是否过期
        if (!StringUtils.hasLength(inputCaptcha)){
            return false;
        }
        //生成的验证码(正确的验证码)
        String saveCaptcha = (String)session.getAttribute(KAPTCHA_SESSION_KEY);
        Date savaCaptchaDate = (Date)session.getAttribute(KAPTCHA_SESSION_DATE);

        if (inputCaptcha.equalsIgnoreCase(saveCaptcha)){//不区分大小写
            if (savaCaptchaDate!=null || System.currentTimeMillis()-savaCaptchaDate.getTime()<TIME_OUT){
                return true;
            }
        }
        return false;
    }
}



三.验证

然后就可以了

目录
相关文章
|
2月前
|
前端开发 数据库 Python
Django自带图形验证码 django-simple-captcha
Django自带图形验证码 django-simple-captcha
36 0
|
5月前
|
存储
Postman 接口测试配置 Pre-request Script
Postman 接口测试配置 Pre-request Script
236 5
Postman 接口测试配置 Pre-request Script
|
5月前
|
JavaScript 前端开发 API
koa2使用svg-captcha生成验证码接口(含前端vue项目中使用)
koa2使用svg-captcha生成验证码接口(含前端vue项目中使用)
130 0
|
6月前
|
前端开发 PHP
laravel 使用captcha库生成验证码的方法
laravel 使用captcha库生成验证码的方法
56 0
|
7月前
|
前端开发 JavaScript Java
springboot 集成easy-captcha实现图像验证码显示和登录
springboot 集成easy-captcha实现图像验证码显示和登录
425 0
|
7月前
|
缓存 NoSQL 前端开发
一文搞懂Go整合captcha实现验证码功能
一文搞懂Go整合captcha实现验证码功能
112 0
|
7月前
tianai-captcha
tianai-captcha
372 0
|
前端开发 Java Spring
RuoYi-Vue 在Swagger和Postman中 上传文件测试方案
RuoYi-Vue 在Swagger和Postman中 上传文件测试方案
300 0
|
Java
一行代码实现验证码--Happy Captcha
一行代码实现验证码--Happy Captcha
223 0
|
测试技术 PHP
laravle phpunit单元测试登录自动获取token
laravle phpunit单元测试登录自动获取token
108 0