主頁(yè) > 知識(shí)庫(kù) > golang包快速生成base64驗(yàn)證碼的方法

golang包快速生成base64驗(yàn)證碼的方法

熱門標(biāo)簽:福州鐵通自動(dòng)外呼系統(tǒng) 長(zhǎng)沙ai機(jī)器人電銷 地圖標(biāo)注測(cè)試 賺地圖標(biāo)注的錢犯法嗎 廣東語(yǔ)音外呼系統(tǒng)供應(yīng)商 烏魯木齊人工電銷機(jī)器人系統(tǒng) 智能電銷機(jī)器人營(yíng)銷 澳門防封電銷卡 濮陽(yáng)自動(dòng)外呼系統(tǒng)代理

base64Captcha快速生成base64編碼圖片驗(yàn)證碼字符串

支持多種樣式,算術(shù),數(shù)字,字母,混合模式,語(yǔ)音模式.

Base64是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)代碼的編碼方式之一。Base64編碼可用于在HTTP環(huán)境下傳遞較長(zhǎng)的標(biāo)識(shí)信息, 直接把base64當(dāng)成是字符串方式的數(shù)據(jù)就好了

減少了http請(qǐng)求;數(shù)據(jù)就是圖片;

為APIs微服務(wù)而設(shè)計(jì)

為什么base64圖片 for RESTful 服務(wù)

Data URIs 支持大部分瀏覽器,IE8之后也支持.

小圖片使用base64響應(yīng)對(duì)于RESTful服務(wù)來(lái)說(shuō)更便捷
godoc文檔

在線Demo Playground Powered by Vuejs+elementUI+Axios

安裝golang包

go get -u github.com/mojocn/base64Captcha

創(chuàng)建圖像驗(yàn)證碼

import "github.com/mojocn/base64Captcha"
func demoCodeCaptchaCreate() {
  //config struct for digits
  //數(shù)字驗(yàn)證碼配置
  var configD = base64Captcha.ConfigDigit{
    Height:   80,
    Width:   240,
    MaxSkew:  0.7,
    DotCount:  80,
    CaptchaLen: 5,
  }
  //config struct for audio
  //聲音驗(yàn)證碼配置
  var configA = base64Captcha.ConfigAudio{
    CaptchaLen: 6,
    Language:  "zh",
  }
  //config struct for Character
  //字符,公式,驗(yàn)證碼配置
  var configC = base64Captcha.ConfigCharacter{
    Height:       60,
    Width:       240,
    //const CaptchaModeNumber:數(shù)字,CaptchaModeAlphabet:字母,CaptchaModeArithmetic:算術(shù),CaptchaModeNumberAlphabet:數(shù)字字母混合.
    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")
}

驗(yàn)證圖像驗(yàn)證碼

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

使用golang搭建API服務(wù)

// 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
  //接收客戶端發(fā)送來(lái)的請(qǐng)求參數(shù)
  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
  //創(chuàng)建base64圖像驗(yàn)證碼
 
  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
  //你也可以是用默認(rèn)參數(shù) 生成圖像驗(yàn)證碼
  //base64Png := captcha.GenerateCaptchaPngBase64StringDefault(captchaId)
 
  //set json response
  //設(shè)置json響應(yīng)
 
  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
  //接收客戶端發(fā)送來(lái)的請(qǐng)求參數(shù)
  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
  //比較圖像驗(yàn)證碼
  verifyResult := base64Captcha.VerifyCaptcha(postParameters.Id, postParameters.VerifyValue)
 
  //set json response
  //設(shè)置json響應(yīng)
  w.Header().Set("Content-Type", "application/json; charset=utf-8")
  body := map[string]interface{}{"code": "error", "data": "驗(yàn)證失敗", "msg": "captcha failed"}
  if verifyResult {
    body = map[string]interface{}{"code": "success", "data": "驗(yàn)證通過(guò)", "msg": "captcha verified"}
  }
  json.NewEncoder(w).Encode(body)
}
 
//start a net/http server
//啟動(dòng)golang net/http 服務(wù)器
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)
  }
}

運(yùn)行demo代碼

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

訪問(wèn) http://localhost:777

 到此這篇關(guān)于golang包快速生成base64驗(yàn)證碼的方法的文章就介紹到這了,更多相關(guān)golang base64驗(yàn)證碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python爬蟲模擬登錄帶驗(yàn)證碼網(wǎng)站
  • PHP生成圖片驗(yàn)證碼、點(diǎn)擊切換實(shí)例
  • java 圖片驗(yàn)證碼的實(shí)現(xiàn)代碼
  • js實(shí)現(xiàn)點(diǎn)擊獲取驗(yàn)證碼倒計(jì)時(shí)效果
  • Bootstrap實(shí)現(xiàn)登錄校驗(yàn)表單(帶驗(yàn)證碼)

標(biāo)簽:西雙版納 德州 慶陽(yáng) 調(diào)研邀請(qǐng) 阿克蘇 太原 廣西 貴陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang包快速生成base64驗(yàn)證碼的方法》,本文關(guān)鍵詞  golang,包快速,包,快速,生成,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang包快速生成base64驗(yàn)證碼的方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于golang包快速生成base64驗(yàn)證碼的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章