登录
首页 >  Golang >  Go教程

Golang实现简单验证码生成与验证方法

时间:2026-03-14 09:28:32 238浏览 收藏

本文介绍了如何在Go语言中借助dchest/captcha库快速、安全地实现图形验证码的生成与验证功能,涵盖安装依赖、生成带唯一ID的动态图片验证码、服务端校验用户输入(自动清除已用验证码防重放)、以及灵活配置长度、过期时间与大小写敏感等关键参数,为登录注册等场景提供轻量高效的反机器人防护方案,特别适合中小型项目开箱即用。

Golang如何实现简单的验证码功能_Golang验证码生成与校验方法

在Go语言中实现简单的验证码功能,通常包括生成图形验证码(含数字、字母或汉字)并进行校验。这类功能常用于登录、注册等场景,防止机器人恶意请求。下面介绍一种使用 github.com/dchest/captcha 库实现验证码生成与校验的实用方法。

1. 安装 captcha 库

Go 社区有一个广泛使用的图形验证码库:dchest/captcha,支持数字、音频和图像验证码。通过以下命令安装:

go get github.com/dchest/captcha

2. 生成图像验证码

该库默认将验证码存储在内存中,并通过唯一的 ID 进行标识。生成验证码时会返回一个 ID,前端可通过该 ID 获取图片或校验输入。

示例代码:

package main import ( "github.com/dchest/captcha" "net/http" ) func generateCaptcha(w http.ResponseWriter, r *http.Request) { // 生成一个新验证码 ID id := captcha.New() // 设置响应头为图片格式 w.Header().Set("Content-Type", "image/png") // 将验证码图片写入响应 captcha.WriteImage(w, id, 240, 80) // 宽240,高80 }

访问对应路由时,浏览器将显示一张包含随机字符的图片。

3. 校验用户输入的验证码

用户提交表单后,需比对输入值与实际验证码内容。注意:验证码默认区分大小写,建议转为统一格式处理。

func verifyCaptcha(w http.ResponseWriter, r *http.Request) { r.ParseForm() id := r.FormValue("captcha_id") value := r.FormValue("captcha_value") if captcha.VerifyString(id, value) { w.Write([]byte("验证成功")) } else { w.Write([]byte("验证失败")) } }

VerifyString 函数会自动清除已验证的验证码(可配置),防止重放攻击。

4. 配置验证码选项

你可以自定义验证码长度、是否区分大小写、过期时间等:

// 设置验证码长度为6 captcha.SetCustomLength(6) // 设置过期时间为10分钟 captcha.SetExpiration(600) // 关闭大小写敏感 captcha.SetCaseSensitive(false)

这些设置应在程序启动时调用一次即可。

基本上就这些。使用 dchest/captcha 能快速集成安全可靠的验证码功能,无需从零造轮子。适合中小型项目使用。不复杂但容易忽略。

好了,本文到此结束,带大家了解了《Golang实现简单验证码生成与验证方法》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>