安装 github.com/dchest/captcha 库;2. 生成图像验证码并返回唯一ID;3. 校验用户输入并自动清除验证码;4. 可配置长度、过期时间等参数。

在Go语言中实现简单的验证码功能,通常包括生成图形验证码(含数字、字母或汉字)并进行校验。这类功能常用于登录、注册等场景,防止机器人恶意请求。下面介绍一种使用 github.com/dchest/captcha 库实现验证码生成与校验的实用方法。
Go 社区有一个广泛使用的图形验证码库:dchest/captcha,支持数字、音频和图像验证码。通过以下命令安装:
go get github.com/dchest/captcha该库默认将验证码存储在内存中,并通过唯一的 ID 进行标识。生成验证码时会返回一个 ID,前端可通过该 ID 获取图片或校验输入。
示例代码:
立即学习“go语言免费学习笔记(深入)”;
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 }用户提交表单后,需比对输入值与实际验证码内容。注意:验证码默认区分大小写,建议转为统一格式处理。
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 函数会自动清除已验证的验证码(可配置),防止重放攻击。
你可以自定义验证码长度、是否区分大小写、过期时间等:
// 设置验证码长度为6 captcha.SetCustomLength(6) // 设置过期时间为10分钟 captcha.SetExpiration(600) // 关闭大小写敏感 captcha.SetCaseSensitive(false)这些设置应在程序启动时调用一次即可。
基本上就这些。使用 dchest/captcha 能快速集成安全可靠的验证码功能,无需从零造轮子。适合中小型项目使用。不复杂但容易忽略。
以上就是Golang如何实现简单的验证码功能_Golang验证码生成与校验方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号