springboot+captcha生成验证码

前言:验证码登录是很多项目中会涉及到的,为了数据安全和缓存验证码数据考虑,一般会要求后端来生成验证码,并存储在redis中,设置有效期,点击可刷新。本文,讲述springboot captcha生成验证码的全过程,并写一个简单的demo

springboot captcha生成验证码

创建springboot项目,点击Next

springboot captcha生成验证码

填写必要信息,点击Next

springboot captcha生成验证码

选择必要依赖,点击Next

springboot captcha生成验证码

确认项目信息,点击Finish

springboot captcha生成验证码

生成初始项目如下

springboot captcha生成验证码

添加工具依赖,这里我们使用hutool,版本选最新的即可,文章末尾会介绍

springboot captcha生成验证码

新建控制器CaptchaCtl

springboot captcha生成验证码

增加一个生成验证码的接口

springboot captcha生成验证码

调用CaptchaUtil里边的具体方法

springboot captcha生成验证码

三种方法主要区别

  • createLineCaptcha:生成线段干扰验证码
springboot captcha生成验证码

线段干扰验证码

  • createCircleCaptcha:生成圆圈干扰验证码
springboot captcha生成验证码

圆圈干扰验证码

  • createShearCaptcha:生成扭曲干扰验证码
springboot captcha生成验证码

扭曲干扰验证码

选择一种喜欢的,完善生成方法,其中code就是图片对应的真实文字,用来和用户输入值进行比较

springboot captcha生成验证码

运行项目,请求接口,前端获取到了图片流,后端打印出了验证码的真实值:tdxua

springboot captcha生成验证码

拷贝前端的图片流,去专业网站验证图片生成情况

springboot captcha生成验证码

图、文一致,至此springboot captcha生成验证码的功能就完成了。

贴上完整代码


  • pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.3.4.RELEASEversion>
        <relativePath/> 
    parent>
    <groupId>top.baohaipenggroupId>
    <artifactId>captcha-bootartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>captcha-bootname>
    <description>springboot生成验证码description>

    <properties>
        <java.version>1.8java.version>
    properties>

    <dependencies>
        <dependency>
            <groupId>cn.hutoolgroupId>
            <artifactId>hutool-allartifactId>
            <version>5.4.3version>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintagegroupId>
                    <artifactId>junit-vintage-engineartifactId>
                exclusion>
            exclusions>
        dependency>
    dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>

project>

CaptchaCtl.java

package top.baohaipeng.captchaboot.controller;

import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.ShearCaptcha;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @ClassName CaptchaCtl
 * @Description TODO
 * @Author 头条号:北海派bhp
 * @Date 2020/9/25 21:42
 * @Version 1.0
 **/
@RestController
@RequestMapping
public class CaptchaCtl {

    @GetMapping("captcha")
    public String getCaptcha(){

        ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(111, 36);

        // 验证码对应的字符串
        String code = captcha.getCode();
        System.out.println("真实验证码是:" code);
        // 返回图片流
        return captcha.getImageBase64();
    }
}

相关资料

springboot captcha生成验证码

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

Hutool中的工具方法来自于每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当。

Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。

内容出处:,

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/procedure/13456.html

发表评论

登录后才能评论