Go语言实战案例:简易图像验证码生成

B站影视 港台电影 2025-09-27 12:20 1

摘要:在 Web 应用中,验证码(CAPTCHA)常用于防止机器人批量提交请求,比如注册、登录、评论等功能。本篇我们将使用 Go 语言和 Gin 框架,结合第三方库 github.com/mojocn/base64Captcha ,快速实现一个 简易图像验证码生成接

在 Web 应用中,验证码(CAPTCHA)常用于防止机器人批量提交请求,比如注册、登录、评论等功能。

本篇我们将使用 Go 语言和 Gin 框架,结合第三方库 github.com/mojocn/base64Captcha ,快速实现一个 简易图像验证码生成接口 。

首先安装 Gin 和 Base64Captcha:

go get github.com/gin-gonic/gingo get github.com/mojocn/base64Captchapackage mainimport ( "github.com/gin-gonic/gin" "github.com/mojocn/base64Captcha" "net/http" )var store = base64Captcha.DefaultMemStorefunc generateCaptcha(c *gin.Context) { driver := base64Captcha.NewDriverDigit(80, 240, 5, 0.7, 80) captcha := base64Captcha.NewCaptcha(driver, store) id, b64s, err := captcha.Generate if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "验证码生成失败"}) return }c.JSON(http.StatusOK, gin.H{ "captcha_id": id, "captcha_image": b64s, }) }func verifyCaptcha(c *gin.Context) { var req struct { ID string `json:"id"` Value string `json:"value"` } if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error}) return }if store.Verify(req.ID, req.Value, true) { c.JSON(http.StatusOK, gin.H{"message": "验证成功"}) } else { c.JSON(http.StatusBadRequest, gin.H{"message": "验证码错误"}) } }func main { r := gin.Default r.GET("/captcha", generateCaptcha) r.POST("/verify", verifyCaptcha) r.Run(":8080") }

运行服务:

go run main.go

返回:

{ "captcha_id": "ZffX7Xr7EccGdS4b", "captcha_image": "data:image/png;base64,iVBORw0KGgoAAAANSUhE..."}

前端可直接用 渲染验证码。

使用 base64Captcha 结合 Gin,可以非常方便地生成和校验验证码。本篇示例已经可以直接应用到注册、登录等防刷场景中。

来源:墨码行者

相关推荐