一个很好用且开源的java验证码框架kaptcha

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

 kaptcha 介绍 

         kaptcha是一个优秀的验证码框架 ,在不多的项目中使用了很多年很稳定,功能强大配置项很丰富,可以根据不同的需求配置不同的效果。

 以下最常用的配置  字母+数字 验证码实现的效果图: 

 java kaptcha,开源,java,开发语言java kaptcha,开源,java,开发语言java kaptcha,开源,java,开发语言

一  导入kaptcha包:

       <dependency>
            <groupId>com.github.penggle</groupId>
            <artifactId>kaptcha</artifactId>
            <version>2.3.2</version>
            <scope>compile</scope>
        </dependency>

二  在springboot使用,配置验证码bean放在框架容器管理

 @Configuration
public class WebConfiguration implements WebMvcConfigurer {  
    @Bean
public DefaultKaptcha getKaptchaBean() {
    // 创建 DefaultKaptcha 实例
    DefaultKaptcha bean = new DefaultKaptcha();
    
    // 创建 Properties 实例,用于配置 Kaptcha 属性
    Properties properties = new Properties();

    // 设置验证码边框为无边框
    properties.setProperty("kaptcha.border", "no");
    // 设置验证码图片的宽度为 95 像素
    properties.setProperty("kaptcha.image.width", "95");
    // 设置验证码图片的高度为 45 像素
    properties.setProperty("kaptcha.image.height", "45");
    // 设置验证码背景颜色为浅灰色
    properties.setProperty("kaptcha.background.clear.from", "248,248,248");
    // 设置验证码字符范围为数字和小写字母(排除容易混淆的字符)
    properties.setProperty("kaptcha.textproducer.char.string", "23456789abcdefhijkmnpqrstuvwxyz");
    // 设置验证码文字颜色为蓝色
    properties.setProperty("kaptcha.textproducer.font.color", "0,0,255");
    // 设置验证码干扰实现类为水波纹效果
    properties.setProperty("kaptcha.obscurificator.impl", "com.google.code.kaptcha.impl.WaterRipple");

    // 设置验证码文字字体大小为 35 像素
    properties.setProperty("kaptcha.textproducer.font.size", "35");
    // 设置验证码字符长度为 4
    properties.setProperty("kaptcha.textproducer.char.length", "4");
    // 设置验证码字符间隔为 2 像素
    properties.setProperty("kaptcha.textproducer.char.space", "2");
    // 设置验证码噪点生成实现类为无噪点
    properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");
    
    // 使用 Config 类将 Properties 配置应用到 Kaptcha 实例中
    com.google.code.kaptcha.util.Config config = new com.google.code.kaptcha.util.Config(properties);
    bean.setConfig(config);
    
    // 返回配置后的 Kaptcha 实例
    return bean;
}
}

如果不是springboot项目,xml配置项:文章来源地址https://www.toymoban.com/news/detail-849086.html

<!-- 图片边框 -->
                        <prop key="kaptcha.border">no</prop>
                        <!-- 图片宽度 -->
                        <prop key="kaptcha.image.width">95</prop>
                        <!-- 图片高度 -->
                        <prop key="kaptcha.image.height">45</prop>
                        <!-- 验证码背景颜色渐变,开始颜色 -->
                        <prop key="kaptcha.background.clear.from">248,248,248</prop>
                        <!-- 验证码背景颜色渐变,结束颜色 -->
                        <prop key="kaptcha.background.clear.to">248,248,248</prop>
                        <!-- 验证码的字符 -->
                        <prop key="kaptcha.textproducer.char.string">23456789abcdefhijkmnpqrstuvwxyz</prop>
                        <!-- 验证码字体颜色 -->
                        <prop key="kaptcha.textproducer.font.color">0,0,255</prop>
                        <!-- 验证码的效果,水纹 -->
                        <prop key="kaptcha.obscurificator.impl">com.google.code.kaptcha.impl.WaterRipple</prop>
                        <!-- 验证码字体大小 -->
                        <prop key="kaptcha.textproducer.font.size">35</prop>
                        <!-- 验证码字数 -->
                        <prop key="kaptcha.textproducer.char.length">4</prop>
                        <!-- 验证码文字间距 -->
                        <prop key="kaptcha.textproducer.char.space">2</prop>
                        <!-- 验证码字体 -->
                        <prop key="kaptcha.textproducer.font.names">new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
                        </prop>
                        <!-- 不加噪声 -->
                        <prop key="kaptcha.noise.impl">com.google.code.kaptcha.impl.NoNoise</prop>

 三 使用验证码

import com.google.code.kaptcha.Producer;
import com.jxwifi.kyc.common.tools.cache.CaptcheCacheServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.util.UUID;

/**
 * 图形验证码控制器
 */
@RequestMapping("/public/")
@RestController
public class CaptchaController  {



    @Autowired
    private CaptcheCacheServiceImpl cacheService;

    @Autowired
    private Producer captchaProducer;

    /**
     *  获取图形验证码
     * @param request
     * @param response
     * @throws Exception
     */
    @RequestMapping(value = "/getCaptcha", method = RequestMethod.GET)
    public void captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
        byte[] captchaChallengeAsJpeg = null;
        ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
        try {

            String uuid = UUID.randomUUID().toString();
            String captcha = captchaProducer.createText();
            cacheService.put("captchaKey_"+uuid, captcha);
            // 将验证码放置到Cookie中
            Cookie cookie = new Cookie("captcha-key", uuid);
            cookie.setPath("/");
            cookie.setMaxAge(60*1000);
            response.setHeader("Access-Control-Allow-Credentials", "true");
            response.setHeader("Access-Control-Allow-Origin", 
      
            response.addCookie(cookie);
            BufferedImage challenge = captchaProducer.createImage(captcha);
            ImageIO.write(challenge, "jpg", jpegOutputStream);
            captchaChallengeAsJpeg = jpegOutputStream.toByteArray();
            response.setHeader("Cache-Control", "no-store");
            response.setHeader("Pragma", "no-cache");
            response.setDateHeader("Expires", 0);
            response.setContentType("image/jpeg");
            ServletOutputStream responseOutputStream = null;
            responseOutputStream = response.getOutputStream();
            responseOutputStream.write(captchaChallengeAsJpeg);
            responseOutputStream.flush();
            responseOutputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }




}

到了这里,关于一个很好用且开源的java验证码框架kaptcha的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 一个基于Java线程池管理的开源框架Hippo4j实践

    @ 目录 概述 定义 线程池痛点 功能 框架概览 架构 部署 Docker安装 二进制安装 运行模式 依赖配置中心 接入流程 个性化配置 线程池监控 无中间件依赖 接入流程 服务端配置 三方框架线程池适配 拒绝策略自定义 Hippo4j 官网地址 https://hippo4j.cn/ 最新版本1.5.0 Hippo4j 官网文档地址

    2023年04月17日
    浏览(44)
  • 推荐一个好用的电商开源项目yudao源码

    1、项目下载cloneruoyi-vue-pro: 🔥 官方推荐 🔥 RuoYi-Vue 全新 Pro 版本,优化重构所有功能。基于 Spring Boot + MyBatis Plus + Vue Element 实现的后台管理系统 + 微信小程序,支持 RBAC 动态权限、数据权限、SaaS 多租户、Flowable 工作流、三方登录、支付、短信、商城等功能。你的 ⭐️ Sta

    2024年02月07日
    浏览(61)
  • Netty是一个由JBOSS提供的开源Java框架,目前已经成为Github上的独立项目

    Netty是一个由JBOSS提供的开源Java框架,目前已经成为Github上的独立项目。它提供了一个异步、事件驱动的网络应用程序框架和工具,用于快速开发高性能、高可靠性的网络服务器和客户端程序。 Netty是一个基于NIO的客户、服务器端的编程框架,使用Netty可以确保快速和简单地开

    2024年01月16日
    浏览(54)
  • 一个简单好用的C++语言单元测试框架-GoogleTest

    GoogleTest 是由 Google 开发的一个用于编写 C++ 单元测试的框架。单元测试中单元的含义,单元就是人为规定的最小的被测功能模块,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。在实际项目中,单元测试往往由开发人员完成。

    2024年01月19日
    浏览(96)
  • 一个简单好用的C语言单元测试框架-Unity

    Unity是一个用于C语言的轻量级单元测试框架。它由Throw The Switch团队开发,旨在简化嵌入式系统的单元测试。单元测试中单元的含义,单元就是人为规定的最小的被测功能模块,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。在

    2024年01月21日
    浏览(57)
  • 【IPAM】Netbox —— 一个公认好用的开源网络资源管理系统

    NetBox 是一个 IP 地址管理(IP address management,IPAM)和数据中心基础设施管理(data center infrastructure management,DCIM)工具。最初起源于 DigitalOcean 的网络工程团队,专门用于满足网络和基础设施工程师的需求。它是一个基础设施资源建模 (IRM) 应用程序,旨在支持网络自动化。N

    2024年02月08日
    浏览(44)
  • 开源一个超好用的接口Mock工具——Msw-Tools

    作为一名前端开发,是不是总有这样的体验: 基础功能逻辑和页面UI开发很快速,本来可以提前完成,但是接口数据联调很费劲,耗时又耗力,有时为了保证进度还不得不加加班。 为了摆脱这种痛苦,经过一周的努力,从零开发了一个灵活无依赖,且集成简单的数据接口 M

    2024年02月02日
    浏览(51)
  • Spring是一个开源的Java开发框架,它提供了一种快速、简单的方式来开发企业级应用程序

    Spring是一个开源的Java开发框架,它提供了一种快速、简单的方式来开发企业级应用程序。Spring的主要优点包括简化Java EE开发、提供依赖注入和面向切面编程等功能。以下是Spring的一些核心特性: 依赖注入(DI):Spring通过DI机制,将对象的依赖关系注入到应用程序中,简化了

    2024年02月03日
    浏览(80)
  • Spring Integration Ip 一个好用的TCP/UDP开发框架

    基于我的上一篇文章《Spring Integration超详细解读》,相信大家对Spring Integration已经有了基本的认识。 因此本文中,着重讲解Spring Integration Ip的实际应用。 如果是在POM中,则导入以下依赖(由于spring-integration-ip实际会引入spring-integration的依赖,因此无需再添加相关的依赖了)

    2024年01月16日
    浏览(46)
  • Java领域好用强大的开源库之HulTool

    Hultool 是Java领域一个非常强大好用的开源工具库集。 下面是官网介绍: Hutool是一个功能丰富且易用的Java工具库,通过诸多实用工具类的使用,旨在帮助开发者快速、便捷地完成各类开发任务。 这些封装的工具涵盖了字符串、数字、集合、编码、日期、文件、IO、加密、数据

    2024年02月03日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包