gin生成base64的验证码图片

siskinc · · 2486 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

第一步 下载第三方组件

go get -u github.com/mojocn/base64Captcha

下载过程中可能出错,主要原因还是go get golang.org/x/image 失败

解决方法:①cd $GOPATH/src/golang.org/x
② git clone https://github.com/golang/image

第二歩 设置CaptchaConfig类

type CaptchaConfig struct {
    Id              string
    CaptchaType     string
    VerifyValue     string
    ConfigAudio     base64Captcha.ConfigAudio
    ConfigCharacter base64Captcha.ConfigCharacter
    ConfigDigit     base64Captcha.ConfigDigit
}

第三歩 创建CaptchaConfig类实例

var (
    captchaConfig *CaptchaConfig
    captchaConfigOnce sync.Once
)

// 获取base64验证码基本配置
func GetCaptchaConfig() *CaptchaConfig {
    captchaConfigOnce.Do(func() {
        captchaConfig = &CaptchaConfig{
            Id:              "",
            CaptchaType:     "character",
            VerifyValue:     "",
            ConfigAudio:     base64Captcha.ConfigAudio{},
            ConfigCharacter: base64Captcha.ConfigCharacter{
                Height:             60,
                Width:              240,
                Mode:               2,
                IsUseSimpleFont:    false,
                ComplexOfNoiseText: 0,
                ComplexOfNoiseDot:  0,
                IsShowHollowLine:   false,
                IsShowNoiseDot:     false,
                IsShowNoiseText:    false,
                IsShowSlimeLine:    false,
                IsShowSineLine:     false,
                CaptchaLen:         0,
            },
            ConfigDigit:     base64Captcha.ConfigDigit{},
        }
    })
    return captchaConfig
}

第四歩 API部分

const (
    CAPTCHA_IS_RIGHT = 0
    CAPTCHA_IS_ERROR = -7
)

func GenerateCaptchaHandler(c *gin.Context) {
    // get session
    session := sessions.Default(c)
    captchaConfig := util.GetCaptchaConfig()
    //create base64 encoding captcha
    //创建base64图像验证码
    config := captchaConfig.ConfigCharacter
    //GenerateCaptcha 第一个参数为空字符串,包会自动在服务器一个随机种子给你产生随机uiid.
    captchaId, digitCap := base64Captcha.GenerateCaptcha(captchaConfig.Id, config)
    base64Png := base64Captcha.CaptchaWriteToBase64Encoding(digitCap)
    session.Set("captchaId", captchaId)
    c.String(http.StatusOK, base64Png)
}

//  验证 验证码是否正确
// captchaId: 存于session中
// verifyValue: 客户端发来的验证码
func VerfiyCaptcha(captchaId, verifyValue string) (int, error){
    verifyResult := base64Captcha.VerifyCaptcha(captchaId, verifyValue)
    if verifyResult {
        return CAPTCHA_IS_RIGHT,nil
    } else {
        return CAPTCHA_IS_ERROR, fmt.Errorf("captcha is error")
    }
}

第五歩 简单介绍base64Captcha库的一些变量,参数

CaptchaModeNumber:数字,
CaptchaModeAlphabet:字母,
CaptchaModeArithmetic:算术,
CaptchaModeNumberAlphabet:数字字母混合.


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:siskinc

查看原文:gin生成base64的验证码图片

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2486 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传