Go base64Captcha 图形验证码如何生成和验证

10 min read

Go base64Captcha 是一个可以用于 Go 语言中生成和验证图形验证码的库。使用该库,我们可以轻松地在我们的应用程序中添加验证码功能。

  1. 生成验证码

可以通过 NewCaptcha() 函数来生成验证码。该函数需要传入一个配置的结构体 captcha.Config。例如:

config := captcha.Config{
Mode: captcha.CaptchaModeNumber,
Length: 5,
Width: 240,
Height: 80,
MaxSkew: 0.7,
}

captcha := base64Captcha.NewCaptcha(&config)

在这个例子中,我们的验证码是一个数字,长度为 5,宽度为 240,高度为 80,扭曲度最大为 0.7。

生成验证码之后,可以通过 captcha.Text() 方法获取验证码值,并通过 captcha.Challenge() 方法获取验证码图像的 base64 编码字符串。例如:

text := captcha.Text()
challenge := captcha.Challenge()

  1. 验证验证码

当用户输入验证码之后,我们需要验证验证码是否正确。可以使用 VerifyCaptcha() 函数来验证。该函数需要传入验证码 ID 和用户输入的验证码值。例如:

isCorrect := base64Captcha.VerifyCaptcha(id, value)

id 是生成验证码时返回的验证码 ID,value 是用户输入的验证码值。

如果验证码正确,则 isCorrect 的值为 true,否则为 false。

完整示例:

package main

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

func main() {
config := base64Captcha.Config{
Mode: base64Captcha.CaptchaModeNumber, // 验证码类型:数字
Length: 5, // 验证码长度为5个字符
Width: 240, // 验证码图片的宽度
Height: 80, // 验证码图片的高度
MaxSkew: 0.7, // 验证码的最大扭曲度
}

captcha := base64Captcha.NewCaptcha(&config)

text := captcha.Text()          // 获取验证码的值
challenge := captcha.Challenge() // 获取验证码图片的base64编码字符串

fmt.Println("验证码值:", text)
fmt.Println("验证码图片:", challenge)

isCorrect := base64Captcha.VerifyCaptcha(captcha.Id(), "12345") // 假设用户输入的验证码值是12345

if isCorrect {
    fmt.Println("验证通过!")
} else {
    fmt.Println("验证失败!")
}

}

上述代码中,我们成功使用 Go base64Captcha 库生成了一个基于数字的验证码,并且验证了一个假设的用户输入值是否正确。