91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何是golang生成base64驗證碼

發布時間:2021-05-19 16:43:42 來源:億速云 閱讀:324 作者:Leah 欄目:編程語言

如何是golang生成base64驗證碼?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

安裝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

golang適合做什么

golang可以做服務器端開發,但golang很適合做日志處理、數據打包、虛擬機處理、數據庫代理等工作。在網絡編程方面,它還廣泛應用于web應用、API應用等領域。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

息烽县| 榆林市| 周宁县| 蕲春县| 上饶市| 平阴县| 乌审旗| 临潭县| 河源市| 固镇县| 武安市| 平昌县| 德惠市| 淮滨县| 聂拉木县| 五河县| 韶山市| 嵊泗县| 嘉祥县| 寿阳县| 和龙市| 东明县| 铜梁县| 汕头市| 三台县| 苍山县| 仙游县| 大洼县| 赞皇县| 城固县| 菏泽市| 开化县| 克拉玛依市| 象州县| 文成县| 竹北市| 嘉禾县| 青海省| 灌南县| 丹凤县| 白山市|