Gin 中使用 base64Captcha 生成圖形驗證 碼以及分散式架構中配置 Captcha
阿新 • • 發佈:2021-10-29
Gin 中使用 base64Captcha 生成圖形驗證 碼以及分散式架構中配置 Captcha
https://github.com/mojocn/base64Captcha
captcha.mojotv.cn
package models import ( "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, capt string)bool{ if store.Verify(id, capt, false){ //驗證成功 return true } else{ //驗證失敗 return false } }
控制器中呼叫
func (con LoginController) Captcha(c *gin.Context) {
id, b64s, err:=models.MakeCaptcha()
if err != nil {
//失敗
fmt.Println(err)
}
c.JSON(200,gin.H{
"CaptchaId":id,
"CaptchaImage":b64s,//驗證碼的url地址
})
}