gin生成base64的验证码图片

2019-02-15  本文已影响12人  一只肥豚鼠

第一步 下载第三方组件

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:数字字母混合.

上一篇 下一篇

猜你喜欢

热点阅读