base64Captcha 生成验证码

验证码的生成与校验

使用了 github.com/mojocn/base64Captcha

官方文档:https://mojotv.cn/go/refactor-base64-captcha

生成验证码

该库验证码有五种形式,数字、字符串、算术、音频

这里我使用的是算术形式的验证码,也可根据需要自己选择对应的验证码形式,配置参数可以到 https://captcha.mojotv.cn/ 这个网站进行调试

// 验证码默认存储对象,数量10240,有效时间10分钟
var store = base64Captcha.DefaultMemStore

// Math 配置参数
var (
	Height          = 70
	Width           = 240
	NoiseCount      = 0
	ShowLineOptions = base64Captcha.OptionShowHollowLine
	BgColor         = &color.RGBA{
		R: 144,
		G: 238,
		B: 144,
		A: 10,
	}
	FontsStorage base64Captcha.FontsStorage
	Fonts        []string
)

// 生成验证码
func Captcha(c *gin.Context) {
	// 这里用的是Math类型的验证码
	driver := base64Captcha.NewDriverMath(Height, Width, NoiseCount, ShowLineOptions, BgColor, FontsStorage, Fonts)
	captcha := base64Captcha.NewCaptcha(driver, store)
	id, b64s, err := captcha.Generate()
	if err != nil {
		log.Fatal("验证码获取失败")
		c.JSON(http.StatusBadRequest, gin.H{
			"msg": "验证码获取失败",
		})
		return
	}
	c.JSON(http.StatusOK, gin.H{
		"captchaId": id,
		"captcha":   b64s,
	})
}

func main() {
	r := gin.Default()

	r.GET("captcha", Captcha)
	r.Run(":8088")
}

可以测试一下,这里我用的是apifox
在这里插入图片描述

是可以得到一个json的,如下图
在这里插入图片描述
在这里插入图片描述

可以得到 base64和验证码id。根据base64 可以显示出来图片信息,把base64 放到 img标签 src属性即可显示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>练习</title>
    <style>
    </style>
</head>
<body>
    <img src="base64">
</body>
</html>

如下图:
在这里插入图片描述

判断验证码是否输入正确

// 模拟登录效果,来验证验证码是否输入正确
func Login(c *gin.Context) {
	var l LoginNeed
	if err := c.ShouldBindJSON(&l); err != nil {
		c.JSON(http.StatusBadRequest, gin.H{
			"msg": "请求错误",
		})
		return
	}
	if store.Verify(l.CaptchaId, l.Captcha, true) {
		c.JSON(http.StatusOK, gin.H{
			"msg": "模拟登录成功",
		})
	}else {
		c.JSON(http.StatusOK, gin.H{
			"msg": "验证码错误",
		})
	}
}

func main() {
	r := gin.Default()

	r.GET("captcha", Captcha)
	r.POST("login", Login)
	r.Run(":8088")
}

还是用apifox
在这里插入图片描述
输入对应的json 数据
在这里插入图片描述

{
	// 验证码答案
    "captcha": "70",
    // 验证码id
    "captcha_id": "mR4kqDkNVSgurka7kFHM"
}

可以看到 已经验证通过了!
在这里插入图片描述

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值