使用
base64Captcha 的使用非常简单只需要几行代码就可配置使用
依赖引入
go get -u github.com/mojocn/base64Captcha
简单用法
创建一个生成器
// 创建一个全局缓存
var store = base64Captcha.DefaultMemStore
func captcha(){
driverString := base64Captcha.NewDriverString(60, 100, 200, 2, 6,"123456abcdefghijklmnopqrstuvwxyz", nil, nil, nil)
// id 为缓存id,str为生成的base64码
// 除DriverString 还有DriverMath,DriverChinese,DriverAudio,DriverDigit等实现
id,str,err :=base64Captcha.NewCaptcha(driverString, store).Generate()
if err!=nil{
...
}
return id,str
}
结构体注释
DriverString{
Height: 60, // 高
Width: 100, // 宽
NoiseCount: 200, // 背景噪点数量
ShowLineOptions: base64Captcha.OptionShowHollowLine, // 干扰线数量 默认为2,4,8
Length: 6, // 验证码长度
Source: "1234567890qwertyuioplkjhgfdsazxcvbnm", // 验证码随机文本
BgColor: nil, // 背景色
Fonts: nil, // 字体
}
DriverMath{
Height: 60,// 同上
Width: 100,// 同上
NoiseCount: 200,// 同上
ShowLineOptions: base64Captcha.OptionShowHollowLine,// 同上
BgColor: nil,// 同上
Fonts: nil,// 同上
}
...
Driver 接口重写
此外该工具包还提供了 Driver 接口,可通过重写其方法来自定义自己的验证码
github 地址
github 地址 mojocn/base64Captcha: captcha of base64 image string (github.com)
代码示例
在 Gin 框架中生成和校验验证码
package main
import (
"github.com/gin-gonic/gin"
"github.com/mojocn/base64Captcha"
"go.uber.org/zap"
"net/http"
)
// 图片验证码存储器
var store = base64Captcha.DefaultMemStore
// 生成验证码
func GenerateCode() (string, string){
driver := base64Captcha.NewDriverDigit(80, 240, 0.7, 80)
cp := base64Captcha.NewCaptcha(driver, store)
id, b64s, err := cp.Generate()
if err != nil {
panic("验证码生成失败")
}
fmt.Println("校验验证码凭证:", id)
fmt.Println("base64加密验证码:", b64s)
return id, b64s
}
// 校验验证码
func VerifyCode(id string, code int) (bool){
// 第一个参数是验证码校验凭证,第二个参数是验证码,第三个参数是校验后该验证码是否失效
if !store.Verify(id, b64s, false){
return false
}else {
return true
}
}
func main(){
id, b64s := GenerateCode()
code := 12345 // 这是b64s中所存的数字验证码
if VerifyCode(id, code) {
fmt.Println("成功")
}else {
fmt.Println("失败")
}
}