Go base64Captcha 使用

使用

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("失败")
	}
}
Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计