最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot整合EasyCaptcha實現(xiàn)圖形驗證碼功能

 更新時間:2024年02月02日 11:45:49   作者:gengduc  
這篇文章主要介紹了SpringBoot整合EasyCaptcha實現(xiàn)圖形驗證碼功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

簡介

EasyCaptcha:https://github.com/ele-admin/EasyCaptcha

Java圖形驗證碼,支持gif、中文、算術(shù)等類型,可用于Java Web、JavaSE等項目。

添加依賴

<dependency>
    <groupId>com.github.whvcse</groupId>
    <artifactId>easy-captcha</artifactId>
    <version>1.6.2</version>
</dependency>

需求分析

前后端分離,前端使用 Vue3 開發(fā),后端使用 Spring Boot 開發(fā)。組件首次掛載時,獲取驗證碼。點擊圖片刷新獲取驗證碼,驗證碼存儲到 Redis 數(shù)據(jù)庫中。

代碼實現(xiàn)

前端

api

/**
 * 后端響應(yīng)的驗證碼參數(shù)格式
 */
export interface CaptchaResponse {
  /**
   * redis中的驗證碼緩存key
   */
  captchaKey: string;
  /**
   * 驗證碼圖片Base64字符串
   */
  captchaBase64: string;
}
/**
 * 獲取驗證碼api
 */
export function getCaptchaApi(): AxiosPromise<CaptchaResponse> {
  return request({
    url: '/auth/captcha',
    method: 'get'
  })
}

vue組件

<el-form-item prop="verCode">
  <el-input placeholder="驗證碼" size="large" style="width: 67%;" :prefix-icon="Aim" v-model="loginForm.verCode">
  </el-input>
  <div class="login-code">
    <el-image :src="captchaResponse.captchaBase64" style="height: 38px;" @click="getCaptcha" title="刷新圖片驗證碼">
      <template #error>
        <div class="image-slot">
          <el-icon color="#A1A4AB"><icon-picture /></el-icon>
        </div>
      </template>
    </el-image>
  </div>
</el-form-item>

<script setup lang='ts'>
/**
 * 后端響應(yīng)的驗證碼參數(shù)
 */
const captchaResponse = ref<CaptchaResponse>({
  captchaKey: '', // redis中的驗證碼緩存key
  captchaBase64: '', // 驗證碼圖片Base64字符串
})
/**
 * 獲取圖片驗證碼
 */
function getCaptcha() {
  getCaptchaApi().then((response) => {
    captchaResponse.value = response.data
  }).catch((error) => {
    return Promise.reject(error)
  })
}
/**
 * 組件掛載時,獲取圖片驗證碼
 */
onMounted(() => {
  getCaptcha()

})
</script>

后端

package com.lcloud.controller;

import com.lcloud.dto.UserLoginDTO;
import com.lcloud.response.Response;
import com.lcloud.service.AuthService;
import com.lcloud.vo.CaptchaVO;
import com.lcloud.vo.UserLoginVO;
import com.wf.captcha.SpecCaptcha;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;

import java.util.UUID;

@Slf4j
@RestController
@RequestMapping("/auth")
@Tag(name = "授權(quán)管理")
public class AuthController {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    /**
     * 獲取圖片驗證碼
     *
     * @return 圖片驗證碼的key和base64編碼字符串
     * @throws Exception 拋出異常
     */
    @GetMapping("/captcha")
    @Operation(summary = "獲取圖片驗證碼")
    public Response<CaptchaVO> captcha() throws Exception {
        // 設(shè)置圖片驗證碼的屬性(寬、高、長度、字體)
        SpecCaptcha specCaptcha = new SpecCaptcha(100, 38, 4);
        specCaptcha.setFont(1);
        // 圖片驗證碼轉(zhuǎn)換成base64編碼字符串
        String captchaBase64 = specCaptcha.toBase64();
        // 圖片驗證碼結(jié)果
        String key = UUID.randomUUID().toString();
        //log.info("key: {}", key);
        String verCode = specCaptcha.text().toLowerCase();
        // (key,value)=》(uuid,verCode)存入redis
        redisTemplate.opsForValue().set(key, verCode);
        // 返回圖片驗證碼的key和base64編碼字符串
        CaptchaVO captchaVO = CaptchaVO.builder().captchaKey(key).captchaBase64(captchaBase64).build();
        return Response.success(captchaVO);
    }
}

測試

image-20240125212212926

image-20240125212310817

以上就是SpringBoot整合EasyCaptcha實現(xiàn)圖形驗證碼功能的詳細內(nèi)容,更多關(guān)于SpringBoot EasyCaptcha驗證碼的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解利用SpringCloud搭建一個最簡單的微服務(wù)框架

    詳解利用SpringCloud搭建一個最簡單的微服務(wù)框架

    這篇文章主要介紹了詳解利用SpringCloud搭建一個最簡單的微服務(wù)框架,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Java的Struts框架中<results>標(biāo)簽的使用方法

    Java的Struts框架中<results>標(biāo)簽的使用方法

    這篇文章主要介紹了Java的Struts框架中<results>標(biāo)簽的使用方法,Struts框架是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-11-11
  • SpringBoot+Mybatis plus實現(xiàn)多數(shù)據(jù)源整合的實踐

    SpringBoot+Mybatis plus實現(xiàn)多數(shù)據(jù)源整合的實踐

    本文主要介紹了SpringBoot+Mybatis plus實現(xiàn)多數(shù)據(jù)源整合的實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • SpringBoot異常錯誤頁面實現(xiàn)方法介紹

    SpringBoot異常錯誤頁面實現(xiàn)方法介紹

    在項目訪問的時候我們經(jīng)常會發(fā)生錯誤或者頁面找不到,比如:資源找不到404,服務(wù)器500錯誤,默認情況下springboot的處理機制都是去跳轉(zhuǎn)內(nèi)部的錯誤地址:/error 和與之對應(yīng)的一個錯誤頁面
    2022-09-09
  • springMVC的RequestMapping請求不到路徑的解決

    springMVC的RequestMapping請求不到路徑的解決

    這篇文章主要介紹了springMVC的RequestMapping請求不到路徑的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java實現(xiàn)選課系統(tǒng)

    java實現(xiàn)選課系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)選課系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • 如何使用IDEA開發(fā)Spark SQL程序(一文搞懂)

    如何使用IDEA開發(fā)Spark SQL程序(一文搞懂)

    Spark SQL 是一個用來處理結(jié)構(gòu)化數(shù)據(jù)的spark組件。它提供了一個叫做DataFrames的可編程抽象數(shù)據(jù)模型,并且可被視為一個分布式的SQL查詢引擎。這篇文章主要介紹了如何使用IDEA開發(fā)Spark SQL程序(一文搞懂),需要的朋友可以參考下
    2021-08-08
  • java使用websocket,并且獲取HttpSession 源碼分析(推薦)

    java使用websocket,并且獲取HttpSession 源碼分析(推薦)

    這篇文章主要介紹了java使用websocket,并且獲取HttpSession,通過使用配置源碼分析了各方面知識點,具體操作步驟大家可查看下文的詳細講解,感興趣的小伙伴們可以參考一下。
    2017-08-08
  • ES結(jié)合java代碼聚合查詢詳細示例

    ES結(jié)合java代碼聚合查詢詳細示例

    es查詢有一個很常用的一種叫聚合查詢,相當(dāng)于mysql中的分組group by 后拿各組數(shù)量進行統(tǒng)計,實現(xiàn)起來也是很簡單,下面這篇文章主要給大家介紹了關(guān)于ES結(jié)合java代碼聚合查詢的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • JAVA比較兩張圖片相似度的方法

    JAVA比較兩張圖片相似度的方法

    這篇文章主要介紹了JAVA比較兩張圖片相似度的方法,涉及java針對圖片像素操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07

最新評論

奉节县| 株洲县| 郯城县| 长白| 长海县| 青神县| 建平县| 通辽市| 平安县| 高邮市| 安丘市| 贺兰县| 施秉县| 酒泉市| 四平市| 沐川县| 塘沽区| 新干县| 西充县| 加查县| 河源市| 镇江市| 鄂尔多斯市| 南郑县| 阜城县| 庆安县| 鹤峰县| 吉水县| 苏尼特左旗| 耒阳市| 上思县| 湟中县| 东乌| 肥城市| 兴山县| 安岳县| 昌邑市| 长寿区| 大冶市| 神池县| 玛纳斯县|