golang 映像驗證碼

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

為什麼base64圖片 for RESTful 服務

  Data URIs 支援大部分瀏覽器,IE8之後也支援.  小圖片使用base64響應對於RESTful服務來說更便捷

godoc文檔

線上Demo Playground Powered by Vuejs+elementUI+Axios









wav file

安裝golang包

go get -u github.com/mojocn/base64Captcha

對於中國大陸Gopher go get golang.org/x/image 失敗解決方案:

    mkdir -p $GOPATH/src/golang.org/x    cd $GOPATH/src/golang.org/x    git clone https://github.com/golang/image.git

建立映像驗證碼

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,    }    //建立聲音驗證碼    //GenerateCaptcha 第一個參數為空白字串,包會自動在伺服器一個隨機種子給你產生隨機uiid.    idKeyA, capA := base64Captcha.GenerateCaptcha("", configA)    //以base64編碼    base64stringA := base64Captcha.CaptchaWriteToBase64Encoding(capA)    //建立字元公式驗證碼.    //GenerateCaptcha 第一個參數為空白字串,包會自動在伺服器一個隨機種子給你產生隨機uiid.    idKeyC, capC := base64Captcha.GenerateCaptcha("", configC)    //以base64編碼    base64stringC := base64Captcha.CaptchaWriteToBase64Encoding(capC)    //建立數字驗證碼.    //GenerateCaptcha 第一個參數為空白字串,包會自動在伺服器一個隨機種子給你產生隨機uiid.    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 mainimport (    "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}// base64Captcha create http handlerfunc 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    }    //GenerateCaptcha 第一個參數為空白字串,包會自動在伺服器一個隨機種子給你產生隨機uiid.    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 handlerfunc 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    //建立映像驗證碼api    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/examplesgo run main.go

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.