若依改用EasyCaptcha驗證碼

若依自帶的驗證碼樣式比較單一,所以想改用EasyCaptcha驗證碼,另外EasyCaptcha算術驗證碼可能會有負數,輸入時需要寫負號,比較麻煩,所以使用一個簡單的方法過濾掉負數結果

原本的驗證碼依賴和代碼可刪可不刪,注釋掉即可

  1. 在父模塊添加依賴

    <properties><captcha.version>1.6.2</captcha.version>
    </properties><dependencyManagement><dependencies>
    <!-- EasyCaptcha驗證碼依賴  --><dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>${captcha.version}</version></dependency></dependencies>
    </dependencyManagement>
    

    image-20250416093559192

  2. ruoyi-admin模塊中添加依賴

    <!-- 驗證碼 -->
    <dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId>
    </dependency>
    

    image-20250416093638335

  3. 找到CaptchaController,java,修改getCode方法

    public AjaxResult getCode(HttpServletResponse response) throws IOException, FontFormatException {AjaxResult ajax = AjaxResult.success();boolean captchaEnabled = configService.selectCaptchaEnabled();ajax.put("captchaEnabled", captchaEnabled);if (!captchaEnabled){return ajax;}// 保存驗證碼信息String uuid = IdUtils.simpleUUID();String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;//新驗證碼//圖形驗證碼//SpecCaptcha captcha = new SpecCaptcha(130, 48, 4);//算術驗證碼ArithmeticCaptcha captcha;String code;captcha = new ArithmeticCaptcha(130, 48);//得到驗證碼的值code = captcha.text();//若為負數則重新生成int i = Integer.parseInt(code);while (i < 0){System.out.println("code = " + code + ",負數,重新生成!!!!!!!!");captcha = new ArithmeticCaptcha(130, 48);code = captcha.text();i = Integer.parseInt(code);System.out.println("i = " + i + ",新值!!!");}// 設置內置字體captcha.setFont(Captcha.FONT_1);//captcha.setLen(2);  // 幾位數運算,默認是兩位//captcha.getArithmeticString();  // 獲取運算的公式//存入redisredisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);//舊驗證碼//String capStr = null, code = null;//BufferedImage image = null;// 生成驗證碼//String captchaType = RuoYiConfig.getCaptchaType();//if ("math".equals(captchaType))//{//    String capText = captchaProducerMath.createText();//    capStr = capText.substring(0, capText.lastIndexOf("@"));//    code = capText.substring(capText.lastIndexOf("@") + 1);//    image = captchaProducerMath.createImage(capStr);//}//else if ("char".equals(captchaType))//{//    capStr = code = captchaProducer.createText();//    image = captchaProducer.createImage(capStr);//}////redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); 轉換流信息寫出//FastByteArrayOutputStream os = new FastByteArrayOutputStream();//try//{//    ImageIO.write(image, "jpg", os);//}//catch (IOException e)//{//    return AjaxResult.error(e.getMessage());//}ajax.put("uuid", uuid);ajax.put("img", captcha.toBase64());return ajax;}
    

另外,歡迎大家來我的博客——火柴人兒的小站來玩~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/76125.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76125.shtml
英文地址,請注明出處:http://en.pswp.cn/web/76125.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

趣味編程之go與rust的愛恨情仇

聲明:此篇文章利用deepseek生成。 第一章&#xff1a;出身之謎 Go&#xff08;江湖人稱"高小戈"&#xff09;是名門之后——谷歌家的三少爺。生來就帶著"簡單粗暴"的家族基因&#xff0c;口號是**“少寫代碼多搬磚&#xff0c;并發處理賽神仙”**。它爹Ro…

【cocos creator 3.x】速通3d模型導入, 模型創建,陰影,材質使用,模型貼圖綁定

1、右鍵創建平面&#xff0c;立方體 2、點擊場景根節點&#xff0c;shadows勾選enabled3、點擊燈光&#xff0c;shadow enabled勾選 4、點擊模型&#xff0c;勾選接收陰影&#xff0c;投射陰影&#xff08;按照需要勾選&#xff09; 5、材質創建 6、選中節點&#xff0c;找…

告別昂貴語音合成服務!用GPT-SoVITS生成你的個性化AI語音

文章目錄 前言1.GPT-SoVITS V2下載2.本地運行GPT-SoVITS V23.簡單使用演示4.安裝內網穿透工具4.1 創建遠程連接公網地址 5. 固定遠程訪問公網地址 前言 今天給大家介紹一款AI語音克隆工具——GPT-SoVITS。這款由花兒不哭大佬開發的工具是一款強大的訓練聲音模型與音頻生成工具…

Doris FE 常見問題與處理指南

在數據倉庫領域&#xff0c;Apache Doris 憑借其卓越性能與便捷性被廣泛應用。其中&#xff0c;FE&#xff08;Frontend&#xff09;作為核心組件&#xff0c;承擔著接收查詢請求、管理元數據等關鍵任務。然而&#xff0c;在實際使用中&#xff0c;FE 難免會遭遇各類問題&#…

Unity編輯器擴展之項目資源查找工具

一、需要實現的效果如下: 二、在項目的Asset目錄下新增Editor目錄,新增AssetSearchWindow和EditorDefine和EditorTools這三個C#腳本,并復制以下的代碼保存好之后,就可以實現上述功能啦。 -------------------------------------------EditorTools腳本Begin----------------…

《Java 泛型的作用與常見用法詳解》

大家好呀&#xff01;&#x1f44b; 今天我們要聊的是Java中一個超級重要但又讓很多初學者頭疼的概念——泛型(Generics)。帶你徹底搞懂它&#xff01;&#x1f4aa; 準備好你的小本本&#xff0c;我們開始啦&#xff5e;&#x1f4dd; 一、為什么需要泛型&#xff1f;&#x…

USB(TYPE-C)轉串口(TTL)模塊設計講解

目錄 一 、引言 二、方案設計 三、USB TYPE-C介紹 1、TYPE-C接口定義 1、24P全引腳描述 2、Type C 接口 VBUS/GND 作用 3、Type C 接口 D/D- 作用 1、數據傳輸&#xff1a; 2、設備識別&#xff1a; 3、充電協議協商&#xff1a; 4、Type C 接口 CC1/CC2 作用 1、主從設備區…

v-model進階+ref+nextTick

一、v-model進階 復習 v-model v-model: 雙向數據綁定指令 數據 <-> 視圖: 數據和視圖相互影響, 因此被稱為雙向數據綁定指令 1> 數據變了, 視圖也會跟著變 (數據驅動視圖) 2> 視圖變了, 數據也會跟著變 1. v-model 原理 v-model只是一個語法糖, 比較好用, …

Sentinel源碼—4.FlowSlot實現流控的原理二

大綱 1.FlowSlot根據流控規則對請求進行限流 2.FlowSlot實現流控規則的快速失敗效果的原理 3.FlowSlot實現流控規則中排隊等待效果的原理 4.FlowSlot實現流控規則中Warm Up效果的原理 3.FlowSlot實現流控規則中排隊等待效果的原理 (1)實現排隊等待流控效果的普通漏桶算法介…

2025華中杯數學建模B題完整分析論文(共42頁)(含模型、數據、可運行代碼)

2025華中杯大學生數學建模B題完整分析論文 目錄 一、問題重述 二、問題分析 三、模型假設 四、 模型建立與求解 4.1問題1 4.1.1問題1解析 4.1.2問題1模型建立 4.1.3問題1樣例代碼&#xff08;僅供參考&#xff09; 4.1.4問題1求解結果&#xff08;僅供參考&am…

Project ERROR: liblightdm-qt5-3 development package not found問題的解決方法

問題描述&#xff1a;使用make命令進行ukui-greeter-Debian構建時出現Project ERROR: liblightdm-qt5-3 development package not found錯誤&#xff0c;具體如圖&#xff1a; 問題原因&#xff1a;缺乏liblightdm-qt5-3 development軟件包 解決方法&#xff1a;安裝liblightd…

【C++面向對象】封裝(下):探索C++運算符重載設計精髓

&#x1f525;個人主頁 &#x1f525; &#x1f608;所屬專欄&#x1f608; 每文一詩 &#x1f4aa;&#x1f3fc; 年年歲歲花相似&#xff0c;歲歲年年人不同 —— 唐/劉希夷《代悲白頭翁》 譯文&#xff1a;年年歲歲繁花依舊&#xff0c;歲歲年年看花之人卻不相同 目錄 C運…

從代碼學習深度學習 - Transformer PyTorch 版

文章目錄 前言1. 位置編碼(Positional Encoding)2. 多頭注意力機制(Multi-Head Attention)3. 前饋網絡與殘差連接(Position-Wise FFN & AddNorm)3.1 基于位置的前饋網絡(PositionWiseFFN)3.2 殘差連接和層規范化(AddNorm)4. 編碼器(Encoder)4.1 編碼器塊(Enco…

閱讀分析Linux0.11 /boot/head.s

目錄 初始化IDT、IDTR和GDT、GDTR檢查協處理器并設置CR0寄存器初始化頁表和CR3寄存器&#xff0c;開啟分頁 初始化IDT、IDTR和GDT、GDTR startup_32:movl $0x10,%eaxmov %ax,%dsmov %ax,%esmov %ax,%fsmov %ax,%gslss _stack_start,%espcall setup_idtcall setup_gdtmovl $0x1…

33、單元測試實戰練習題

以下是三個練習題的具體實現方案&#xff0c;包含完整代碼示例和詳細說明&#xff1a; 練習題1&#xff1a;TDD實現博客評論功能 步驟1&#xff1a;編寫失敗測試 # tests/test_blog.py import unittest from blog import BlogPost, Comment, InvalidCommentErrorclass TestBl…

16-算法打卡-哈希表-兩個數組的交集-leetcode(349)-第十六天

1 題目地址 349. 兩個數組的交集 - 力扣&#xff08;LeetCode&#xff09;349. 兩個數組的交集 - 給定兩個數組 nums1 和 nums2 &#xff0c;返回 它們的 交集 。輸出結果中的每個元素一定是 唯一 的。我們可以 不考慮輸出結果的順序 。 示例 1&#xff1a;輸入&#xff1a;nu…

SciPy庫詳解

SciPy 是一個用于數學、科學和工程計算的 Python 庫&#xff0c;它建立在 NumPy 之上&#xff0c;提供了許多高效的算法和工具&#xff0c;用于解決各種科學計算問題。 CONTENT 1. 數值積分功能代碼 2. 優化問題求解功能代碼3. 線性代數運算功能代碼 4. 信號處理功能代碼 5. 插…

杰弗里·辛頓:深度學習教父

名人說&#xff1a;路漫漫其修遠兮&#xff0c;吾將上下而求索。—— 屈原《離騷》 創作者&#xff1a;Code_流蘇(CSDN)&#xff08;一個喜歡古詩詞和編程的Coder&#x1f60a;&#xff09; 杰弗里辛頓&#xff1a;當堅持遇見突破&#xff0c;AI迎來新紀元 一、人物簡介 杰弗…

BladeX單點登錄與若依框架集成實現

1. 概述 本文檔詳細介紹了將BladeX認證系統與若依(RuoYi)框架集成的完整實現過程。集成采用OAuth2.0授權碼流程&#xff0c;使用戶能夠通過BladeX賬號直接登錄若依系統&#xff0c;實現無縫單點登錄體驗。 2. 系統架構 2.1 總體架構 #mermaid-svg-YxdmBwBtzGqZHMme {font-fa…

初識Redis · set和zset

目錄 前言&#xff1a; set 基本命令 交集并集差集 內部編碼和應用場景 zset 基本命令 交集并集差集 內部編碼和應用場景 應用場景&#xff08;AI生成&#xff09; 排行榜系統 應用背景 設計思路 熱榜系統 應用背景 設計思路 熱度計算方式 總結對比表 前言&a…