golang 图片验证码的生成、验证

go 专栏收录该内容
5 篇文章 0 订阅

依赖包

使用该方法实现图片验证码、必须先安装依赖的包,如果安装出错,请百度安装方法。
“github.com/mojocn/base64Captcha”

生成验证码、以及验证方法

验证图片验证码是否正确,只需要在验证的接口中调用VerfiyCaptcha方法即可。

import (
	"fmt"
	"github.com/mojocn/base64Captcha"
	"sync"
)

type CaptchaConfig struct {
	Id              string
	CaptchaType     string
	VerifyValue     string
	ConfigAudio     base64Captcha.ConfigAudio
	ConfigCharacter base64Captcha.ConfigCharacter
	ConfigDigit     base64Captcha.ConfigDigit
}

var (
	captchaConfig     *CaptchaConfig
	captchaConfigOnce sync.Once
)

// 获取base64验证码基本配置
func GetCaptchaConfig() *CaptchaConfig {
	captchaConfigOnce.Do(func() {
		captchaConfig = &CaptchaConfig{
			Id:          "",
			CaptchaType: "character",
			VerifyValue: "",
			ConfigAudio: base64Captcha.ConfigAudio{},
			ConfigCharacter: base64Captcha.ConfigCharacter{
				Height:             48,
				Width:              120,
				Mode:               1,
				IsUseSimpleFont:    false,
				ComplexOfNoiseText: 0,
				ComplexOfNoiseDot:  0,
				IsShowHollowLine:   false,
				IsShowNoiseDot:     false,
				IsShowNoiseText:    false,
				IsShowSlimeLine:    false,
				IsShowSineLine:     false,
				CaptchaLen:         4,
			},
			ConfigDigit: base64Captcha.ConfigDigit{},
		}
	})
	return captchaConfig
}

//const (
//	CAPTCHA_IS_RIGHT = 0
//	CAPTCHA_IS_ERROR = -7
//)

//  验证 验证码是否正确
// captchaId: 存于session中
// verifyValue: 客户端发来的验证码
// 验证方法
func VerfiyCaptcha(captchaId, verifyValue string) error {
	verifyResult := base64Captcha.VerifyCaptcha(captchaId, verifyValue)
	if verifyResult {
		return nil
	} else {
		return fmt.Errorf("captcha is error")
	}
}

生成图片验证码的后端接口


// 图片验证码
func GenerateCaptchaHandler(context *gin.Context) {
	// get session
	session := sessions.Default(context)
	captchaConfig := tools.GetCaptchaConfig()
	//create base64 encoding captcha
	//创建base64图像验证码
	config := captchaConfig.ConfigCharacter
	//GenerateCaptcha 第一个参数为空字符串,包会自动在服务器一个随机种子给你产生随机uiid.
	captchaId, digitCap := base64Captcha.GenerateCaptcha(captchaConfig.Id, config)
	//fmt.Println("captchaId", captchaId)
	base64Png := base64Captcha.CaptchaWriteToBase64Encoding(digitCap)
	session.Set("captchaId", captchaId)
	session.Save()
	fmt.Println(session.Get("captchaId"))
	context.String(http.StatusOK, base64Png)
}

返回前端一个base64的图片字符串

  • 0
    点赞
  • 1
    评论
  • 5
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

LH7777

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值