• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    golang包快速生成base64验证码的方法

    base64Captcha快速生成base64编码图片验证码字符串

    支持多种样式,算术,数字,字母,混合模式,语音模式.

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。Base64编码可用于在HTTP环境下传递较长的标识信息, 直接把base64当成是字符串方式的数据就好了

    减少了http请求;数据就是图片;

    为APIs微服务而设计

    为什么base64图片 for RESTful 服务

    Data URIs 支持大部分浏览器,IE8之后也支持.

    小图片使用base64响应对于RESTful服务来说更便捷
    godoc文档

    在线Demo Playground Powered by Vuejs+elementUI+Axios

    安装golang包

    go get -u github.com/mojocn/base64Captcha

    创建图像验证码

    import "github.com/mojocn/base64Captcha"
    func demoCodeCaptchaCreate() {
      //config struct for digits
      //数字验证码配置
      var configD = base64Captcha.ConfigDigit{
        Height:   80,
        Width:   240,
        MaxSkew:  0.7,
        DotCount:  80,
        CaptchaLen: 5,
      }
      //config struct for audio
      //声音验证码配置
      var configA = base64Captcha.ConfigAudio{
        CaptchaLen: 6,
        Language:  "zh",
      }
      //config struct for Character
      //字符,公式,验证码配置
      var configC = base64Captcha.ConfigCharacter{
        Height:       60,
        Width:       240,
        //const CaptchaModeNumber:数字,CaptchaModeAlphabet:字母,CaptchaModeArithmetic:算术,CaptchaModeNumberAlphabet:数字字母混合.
        Mode:        base64Captcha.CaptchaModeNumber,
        ComplexOfNoiseText: base64Captcha.CaptchaComplexLower,
        ComplexOfNoiseDot: base64Captcha.CaptchaComplexLower,
        IsShowHollowLine:  false,
        IsShowNoiseDot:   false,
        IsShowNoiseText:  false,
        IsShowSlimeLine:  false,
        IsShowSineLine:   false,
        CaptchaLen:     6,
      }
      //create a audio captcha.
      idKeyA, capA := base64Captcha.GenerateCaptcha("", configA)
      //以base64编码
      base64stringA := base64Captcha.CaptchaWriteToBase64Encoding(capA)
      //create a characters captcha.
      idKeyC, capC := base64Captcha.GenerateCaptcha("", configC)
      //以base64编码
      base64stringC := base64Captcha.CaptchaWriteToBase64Encoding(capC)
      //create a digits captcha.
      idKeyD, capD := base64Captcha.GenerateCaptcha("", configD)
      //以base64编码
      base64stringD := base64Captcha.CaptchaWriteToBase64Encoding(capD)
       
      fmt.Println(idKeyA, base64stringA, "\n")
      fmt.Println(idKeyC, base64stringC, "\n")
      fmt.Println(idKeyD, base64stringD, "\n")
    }
    

    验证图像验证码

    import "github.com/mojocn/base64Captcha"
    func verfiyCaptcha(idkey,verifyValue string){
      verifyResult := base64Captcha.VerifyCaptcha(idkey, verifyValue)
      if verifyResult {
        //success
      } else {
        //fail
      }
    }
    

    使用golang搭建API服务

    // example of HTTP server that uses the captcha package.
    package main
     
    import (
      "encoding/json"
      "fmt"
      "github.com/mojocn/base64Captcha"
      "log"
      "net/http"
    )
     
    //ConfigJsonBody json request body.
    type ConfigJsonBody struct {
      Id       string
      CaptchaType   string
      VerifyValue   string
      ConfigAudio   base64Captcha.ConfigAudio
      ConfigCharacter base64Captcha.ConfigCharacter
      ConfigDigit   base64Captcha.ConfigDigit
    }
     
    var configC = base64Captcha.ConfigCharacter{
      Height:       60,
      Width:       240,
      Mode:        0,
      ComplexOfNoiseText: 0,
      ComplexOfNoiseDot: 0,
      IsShowHollowLine:  false,
      IsShowNoiseDot:   false,
      IsShowNoiseText:  false,
      IsShowSlimeLine:  false,
      IsShowSineLine:   false,
      CaptchaLen:     6,
    }
     
     
    // base64Captcha create http handler
    func generateCaptchaHandler(w http.ResponseWriter, r *http.Request) {
      //parse request parameters
      //接收客户端发送来的请求参数
      decoder := json.NewDecoder(r.Body)
      var postParameters ConfigJsonBody
      err := decoder.Decode(postParameters)
      if err != nil {
        log.Println(err)
      }
      defer r.Body.Close()
     
      //create base64 encoding captcha
      //创建base64图像验证码
     
      var config interface{}
      switch postParameters.CaptchaType {
      case "audio":
        config = postParameters.ConfigAudio
      case "character":
        config = postParameters.ConfigCharacter
      default:
        config = postParameters.ConfigDigit
      }
      captchaId, digitCap := base64Captcha.GenerateCaptcha(postParameters.Id, config)
      base64Png := base64Captcha.CaptchaWriteToBase64Encoding(digitCap)
     
      //or you can do this
      //你也可以是用默认参数 生成图像验证码
      //base64Png := captcha.GenerateCaptchaPngBase64StringDefault(captchaId)
     
      //set json response
      //设置json响应
     
      w.Header().Set("Content-Type", "application/json; charset=utf-8")
      body := map[string]interface{}{"code": 1, "data": base64Png, "captchaId": captchaId, "msg": "success"}
      json.NewEncoder(w).Encode(body)
    }
    // base64Captcha verify http handler
    func captchaVerifyHandle(w http.ResponseWriter, r *http.Request) {
     
      //parse request parameters
      //接收客户端发送来的请求参数
      decoder := json.NewDecoder(r.Body)
      var postParameters ConfigJsonBody
      err := decoder.Decode(postParameters)
      if err != nil {
        log.Println(err)
      }
      defer r.Body.Close()
      //verify the captcha
      //比较图像验证码
      verifyResult := base64Captcha.VerifyCaptcha(postParameters.Id, postParameters.VerifyValue)
     
      //set json response
      //设置json响应
      w.Header().Set("Content-Type", "application/json; charset=utf-8")
      body := map[string]interface{}{"code": "error", "data": "验证失败", "msg": "captcha failed"}
      if verifyResult {
        body = map[string]interface{}{"code": "success", "data": "验证通过", "msg": "captcha verified"}
      }
      json.NewEncoder(w).Encode(body)
    }
     
    //start a net/http server
    //启动golang net/http 服务器
    func main() {
     
      //serve Vuejs+ElementUI+Axios Web Application
      http.Handle("/", http.FileServer(http.Dir("./static")))
     
      //api for create captcha
      http.HandleFunc("/api/getCaptcha", generateCaptchaHandler)
     
      //api for verify captcha
      http.HandleFunc("/api/verifyCaptcha", captchaVerifyHandle)
     
      fmt.Println("Server is at localhost:3333")
      if err := http.ListenAndServe("localhost:3333", nil); err != nil {
        log.Fatal(err)
      }
    }
    

    运行demo代码

    cd $GOPATH/src/github.com/mojocn/captcha/examples
    go run main.go
    

    访问 http://localhost:777

     到此这篇关于golang包快速生成base64验证码的方法的文章就介绍到这了,更多相关golang base64验证码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python爬虫模拟登录带验证码网站
    • PHP生成图片验证码、点击切换实例
    • java 图片验证码的实现代码
    • js实现点击获取验证码倒计时效果
    • Bootstrap实现登录校验表单(带验证码)
    上一篇:Golang在Mac、Linux、Windows下如何交叉编译的实现
    下一篇:详解go中的引用类型
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    golang包快速生成base64验证码的方法 golang,包快速,包,快速,生成,