Gin 中使用 base64Captcha 生成圖形驗證碼


Gin 中使用 base64Captcha 生成圖形驗證 碼以及分布式架構中配置 Captcha

https://github.com/mojocn/base64Captcha
captcha.mojotv.cn
package models

import (
	"fmt"
	"github.com/mojocn/base64Captcha"
	"image/color"
)

// 設置自帶的 store(可以配置成redis)
var store = base64Captcha.DefaultMemStore

//獲取驗證碼
func MakeCaptcha() (id, b64s string, err error) {
	var driver base64Captcha.Driver
	//配置驗證碼的參數
	driverString := base64Captcha.DriverString{
		Height:          40,
		Width:           100,
		NoiseCount:      0,
		ShowLineOptions: 2 | 4,
		Length:          4,
		Source:          "1234567890qwertyuioplkjhgfdsazxcvbnm",
		BgColor:         &color.RGBA{R: 3, G: 102, B: 214, A: 125},
		Fonts:           []string{"wqy-microhei.ttc"},
	}
	//ConvertFonts 按名稱加載字體
	driver = driverString.ConvertFonts()
	//創建 Captcha
	captcha := base64Captcha.NewCaptcha(driver, store)
	//Generate 生成隨機 id、base64 圖像字符串
	id, b64s, err = captcha.Generate()
	return id, b64s, err

}

//驗證驗證碼
func VerifyCaptcha(id string, VerifyValue string) bool {
	fmt.Println(id,VerifyValue )
	if store.Verify(id, VerifyValue, true) {
		//驗證成功
		return true
	} else {
		//驗證失敗
		return false
	}
}

中間件

func (con LoginController) DoLogin(c *gin.Context) {
	//獲取前端傳過來的CaptchaId和verifyValue
	captchId :=c.PostForm("captchaId")
	verifyValue :=c.PostForm("verifyValue")
	//排除前端提交的空請求
	if captchId == "" || verifyValue == ""{
		c.JSON(http.StatusOK, "驗證碼驗證失敗")
		return
	}
	//調用驗證驗證碼的方法
	if flag:= models.VerifyCaptcha(captchId,verifyValue);flag==true{
		//驗證通過
		fmt.Println(flag)
		c.JSON(http.StatusOK, "驗證碼驗證成功")
	}else{
		//驗證失敗
		c.JSON(http.StatusOK, "驗證碼驗證失敗")
	}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM