国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

一個(gè)很好用且開(kāi)源的java驗(yàn)證碼框架kaptcha

這篇具有很好參考價(jià)值的文章主要介紹了一個(gè)很好用且開(kāi)源的java驗(yàn)證碼框架kaptcha。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

?kaptcha 介紹?

? ? ? ? ?kaptcha是一個(gè)優(yōu)秀的驗(yàn)證碼框架?,在不多的項(xiàng)目中使用了很多年很穩(wěn)定,功能強(qiáng)大配置項(xiàng)很豐富,可以根據(jù)不同的需求配置不同的效果。

?以下最常用的配置? 字母+數(shù)字 驗(yàn)證碼實(shí)現(xiàn)的效果圖:?

?java kaptcha,開(kāi)源,java,開(kāi)發(fā)語(yǔ)言java kaptcha,開(kāi)源,java,開(kāi)發(fā)語(yǔ)言java kaptcha,開(kāi)源,java,開(kāi)發(fā)語(yǔ)言

一? 導(dǎo)入kaptcha包:

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

二? 在springboot使用,配置驗(yàn)證碼bean放在框架容器管理

 @Configuration
public class WebConfiguration implements WebMvcConfigurer {  
    @Bean
public DefaultKaptcha getKaptchaBean() {
    // 創(chuàng)建 DefaultKaptcha 實(shí)例
    DefaultKaptcha bean = new DefaultKaptcha();
    
    // 創(chuàng)建 Properties 實(shí)例,用于配置 Kaptcha 屬性
    Properties properties = new Properties();

    // 設(shè)置驗(yàn)證碼邊框?yàn)闊o(wú)邊框
    properties.setProperty("kaptcha.border", "no");
    // 設(shè)置驗(yàn)證碼圖片的寬度為 95 像素
    properties.setProperty("kaptcha.image.width", "95");
    // 設(shè)置驗(yàn)證碼圖片的高度為 45 像素
    properties.setProperty("kaptcha.image.height", "45");
    // 設(shè)置驗(yàn)證碼背景顏色為淺灰色
    properties.setProperty("kaptcha.background.clear.from", "248,248,248");
    // 設(shè)置驗(yàn)證碼字符范圍為數(shù)字和小寫字母(排除容易混淆的字符)
    properties.setProperty("kaptcha.textproducer.char.string", "23456789abcdefhijkmnpqrstuvwxyz");
    // 設(shè)置驗(yàn)證碼文字顏色為藍(lán)色
    properties.setProperty("kaptcha.textproducer.font.color", "0,0,255");
    // 設(shè)置驗(yàn)證碼干擾實(shí)現(xiàn)類為水波紋效果
    properties.setProperty("kaptcha.obscurificator.impl", "com.google.code.kaptcha.impl.WaterRipple");

    // 設(shè)置驗(yàn)證碼文字字體大小為 35 像素
    properties.setProperty("kaptcha.textproducer.font.size", "35");
    // 設(shè)置驗(yàn)證碼字符長(zhǎng)度為 4
    properties.setProperty("kaptcha.textproducer.char.length", "4");
    // 設(shè)置驗(yàn)證碼字符間隔為 2 像素
    properties.setProperty("kaptcha.textproducer.char.space", "2");
    // 設(shè)置驗(yàn)證碼噪點(diǎn)生成實(shí)現(xiàn)類為無(wú)噪點(diǎn)
    properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");
    
    // 使用 Config 類將 Properties 配置應(yīng)用到 Kaptcha 實(shí)例中
    com.google.code.kaptcha.util.Config config = new com.google.code.kaptcha.util.Config(properties);
    bean.setConfig(config);
    
    // 返回配置后的 Kaptcha 實(shí)例
    return bean;
}
}

如果不是springboot項(xiàng)目,xml配置項(xiàng):文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-849086.html

<!-- 圖片邊框 -->
                        <prop key="kaptcha.border">no</prop>
                        <!-- 圖片寬度 -->
                        <prop key="kaptcha.image.width">95</prop>
                        <!-- 圖片高度 -->
                        <prop key="kaptcha.image.height">45</prop>
                        <!-- 驗(yàn)證碼背景顏色漸變,開(kāi)始顏色 -->
                        <prop key="kaptcha.background.clear.from">248,248,248</prop>
                        <!-- 驗(yàn)證碼背景顏色漸變,結(jié)束顏色 -->
                        <prop key="kaptcha.background.clear.to">248,248,248</prop>
                        <!-- 驗(yàn)證碼的字符 -->
                        <prop key="kaptcha.textproducer.char.string">23456789abcdefhijkmnpqrstuvwxyz</prop>
                        <!-- 驗(yàn)證碼字體顏色 -->
                        <prop key="kaptcha.textproducer.font.color">0,0,255</prop>
                        <!-- 驗(yàn)證碼的效果,水紋 -->
                        <prop key="kaptcha.obscurificator.impl">com.google.code.kaptcha.impl.WaterRipple</prop>
                        <!-- 驗(yàn)證碼字體大小 -->
                        <prop key="kaptcha.textproducer.font.size">35</prop>
                        <!-- 驗(yàn)證碼字?jǐn)?shù) -->
                        <prop key="kaptcha.textproducer.char.length">4</prop>
                        <!-- 驗(yàn)證碼文字間距 -->
                        <prop key="kaptcha.textproducer.char.space">2</prop>
                        <!-- 驗(yàn)證碼字體 -->
                        <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>

?三 使用驗(yàn)證碼

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;

/**
 * 圖形驗(yàn)證碼控制器
 */
@RequestMapping("/public/")
@RestController
public class CaptchaController  {



    @Autowired
    private CaptcheCacheServiceImpl cacheService;

    @Autowired
    private Producer captchaProducer;

    /**
     *  獲取圖形驗(yàn)證碼
     * @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);
            // 將驗(yàn)證碼放置到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();
        }
    }




}

到了這里,關(guān)于一個(gè)很好用且開(kāi)源的java驗(yàn)證碼框架kaptcha的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 一個(gè)基于Java線程池管理的開(kāi)源框架Hippo4j實(shí)踐

    一個(gè)基于Java線程池管理的開(kāi)源框架Hippo4j實(shí)踐

    @ 目錄 概述 定義 線程池痛點(diǎn) 功能 框架概覽 架構(gòu) 部署 Docker安裝 二進(jìn)制安裝 運(yùn)行模式 依賴配置中心 接入流程 個(gè)性化配置 線程池監(jiān)控 無(wú)中間件依賴 接入流程 服務(wù)端配置 三方框架線程池適配 拒絕策略自定義 Hippo4j 官網(wǎng)地址 https://hippo4j.cn/ 最新版本1.5.0 Hippo4j 官網(wǎng)文檔地址

    2023年04月17日
    瀏覽(21)
  • 推薦一個(gè)好用的電商開(kāi)源項(xiàng)目yudao源碼

    推薦一個(gè)好用的電商開(kāi)源項(xiàng)目yudao源碼

    1、項(xiàng)目下載cloneruoyi-vue-pro: ?? 官方推薦 ?? RuoYi-Vue 全新 Pro 版本,優(yōu)化重構(gòu)所有功能。基于 Spring Boot + MyBatis Plus + Vue Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 微信小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、數(shù)據(jù)權(quán)限、SaaS 多租戶、Flowable 工作流、三方登錄、支付、短信、商城等功能。你的 ?? Sta

    2024年02月07日
    瀏覽(27)
  • Netty是一個(gè)由JBOSS提供的開(kāi)源Java框架,目前已經(jīng)成為Github上的獨(dú)立項(xiàng)目

    Netty是一個(gè)由JBOSS提供的開(kāi)源Java框架,目前已經(jīng)成為Github上的獨(dú)立項(xiàng)目

    Netty是一個(gè)由JBOSS提供的開(kāi)源Java框架,目前已經(jīng)成為Github上的獨(dú)立項(xiàng)目。它提供了一個(gè)異步、事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架和工具,用于快速開(kāi)發(fā)高性能、高可靠性的網(wǎng)絡(luò)服務(wù)器和客戶端程序。 Netty是一個(gè)基于NIO的客戶、服務(wù)器端的編程框架,使用Netty可以確保快速和簡(jiǎn)單地開(kāi)

    2024年01月16日
    瀏覽(24)
  • 一個(gè)簡(jiǎn)單好用的C語(yǔ)言單元測(cè)試框架-Unity

    Unity是一個(gè)用于C語(yǔ)言的輕量級(jí)單元測(cè)試框架。它由Throw The Switch團(tuán)隊(duì)開(kāi)發(fā),旨在簡(jiǎn)化嵌入式系統(tǒng)的單元測(cè)試。單元測(cè)試中單元的含義,單元就是人為規(guī)定的最小的被測(cè)功能模塊,如C語(yǔ)言中單元指一個(gè)函數(shù),Java里單元指一個(gè)類,圖形化的軟件中可以指一個(gè)窗口或一個(gè)菜單等。在

    2024年01月21日
    瀏覽(22)
  • 一個(gè)簡(jiǎn)單好用的C++語(yǔ)言單元測(cè)試框架-GoogleTest

    GoogleTest 是由 Google 開(kāi)發(fā)的一個(gè)用于編寫 C++ 單元測(cè)試的框架。單元測(cè)試中單元的含義,單元就是人為規(guī)定的最小的被測(cè)功能模塊,如C語(yǔ)言中單元指一個(gè)函數(shù),Java里單元指一個(gè)類,圖形化的軟件中可以指一個(gè)窗口或一個(gè)菜單等。在實(shí)際項(xiàng)目中,單元測(cè)試往往由開(kāi)發(fā)人員完成。

    2024年01月19日
    瀏覽(45)
  • 開(kāi)源一個(gè)超好用的接口Mock工具——Msw-Tools

    開(kāi)源一個(gè)超好用的接口Mock工具——Msw-Tools

    作為一名前端開(kāi)發(fā),是不是總有這樣的體驗(yàn): 基礎(chǔ)功能邏輯和頁(yè)面UI開(kāi)發(fā)很快速,本來(lái)可以提前完成,但是接口數(shù)據(jù)聯(lián)調(diào)很費(fèi)勁,耗時(shí)又耗力,有時(shí)為了保證進(jìn)度還不得不加加班。 為了擺脫這種痛苦,經(jīng)過(guò)一周的努力,從零開(kāi)發(fā)了一個(gè)靈活無(wú)依賴,且集成簡(jiǎn)單的數(shù)據(jù)接口 M

    2024年02月02日
    瀏覽(16)
  • 【IPAM】Netbox —— 一個(gè)公認(rèn)好用的開(kāi)源網(wǎng)絡(luò)資源管理系統(tǒng)

    【IPAM】Netbox —— 一個(gè)公認(rèn)好用的開(kāi)源網(wǎng)絡(luò)資源管理系統(tǒng)

    NetBox 是一個(gè) IP 地址管理(IP address management,IPAM)和數(shù)據(jù)中心基礎(chǔ)設(shè)施管理(data center infrastructure management,DCIM)工具。最初起源于 DigitalOcean 的網(wǎng)絡(luò)工程團(tuán)隊(duì),專門用于滿足網(wǎng)絡(luò)和基礎(chǔ)設(shè)施工程師的需求。它是一個(gè)基礎(chǔ)設(shè)施資源建模 (IRM) 應(yīng)用程序,旨在支持網(wǎng)絡(luò)自動(dòng)化。N

    2024年02月08日
    瀏覽(19)
  • Spring是一個(gè)開(kāi)源的Java開(kāi)發(fā)框架,它提供了一種快速、簡(jiǎn)單的方式來(lái)開(kāi)發(fā)企業(yè)級(jí)應(yīng)用程序

    Spring是一個(gè)開(kāi)源的Java開(kāi)發(fā)框架,它提供了一種快速、簡(jiǎn)單的方式來(lái)開(kāi)發(fā)企業(yè)級(jí)應(yīng)用程序

    Spring是一個(gè)開(kāi)源的Java開(kāi)發(fā)框架,它提供了一種快速、簡(jiǎn)單的方式來(lái)開(kāi)發(fā)企業(yè)級(jí)應(yīng)用程序。Spring的主要優(yōu)點(diǎn)包括簡(jiǎn)化Java EE開(kāi)發(fā)、提供依賴注入和面向切面編程等功能。以下是Spring的一些核心特性: 依賴注入(DI):Spring通過(guò)DI機(jī)制,將對(duì)象的依賴關(guān)系注入到應(yīng)用程序中,簡(jiǎn)化了

    2024年02月03日
    瀏覽(99)
  • Spring Integration Ip 一個(gè)好用的TCP/UDP開(kāi)發(fā)框架

    基于我的上一篇文章《Spring Integration超詳細(xì)解讀》,相信大家對(duì)Spring Integration已經(jīng)有了基本的認(rèn)識(shí)。 因此本文中,著重講解Spring Integration Ip的實(shí)際應(yīng)用。 如果是在POM中,則導(dǎo)入以下依賴(由于spring-integration-ip實(shí)際會(huì)引入spring-integration的依賴,因此無(wú)需再添加相關(guān)的依賴了)

    2024年01月16日
    瀏覽(17)
  • Java領(lǐng)域好用強(qiáng)大的開(kāi)源庫(kù)之HulTool

    Hultool 是Java領(lǐng)域一個(gè)非常強(qiáng)大好用的開(kāi)源工具庫(kù)集。 下面是官網(wǎng)介紹: Hutool是一個(gè)功能豐富且易用的Java工具庫(kù),通過(guò)諸多實(shí)用工具類的使用,旨在幫助開(kāi)發(fā)者快速、便捷地完成各類開(kāi)發(fā)任務(wù)。 這些封裝的工具涵蓋了字符串、數(shù)字、集合、編碼、日期、文件、IO、加密、數(shù)據(jù)

    2024年02月03日
    瀏覽(52)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包