golang包快速生成base64驗證碼的方法
阿新 • • 發佈:2020-03-13
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,Mode: 0,ComplexOfNoiseText: 0,ComplexOfNoiseDot: 0,} // 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驗證碼內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!