您好,登錄后才能下訂單哦!
如何是golang生成base64驗(yàn)證碼?很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
安裝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ā)送來的請求參數(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ā)送來的請求參數(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)證通過", "msg": "captcha verified"} } json.NewEncoder(w).Encode(body) } //start a net/http server //啟動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
golang可以做服務(wù)器端開發(fā),但golang很適合做日志處理、數(shù)據(jù)打包、虛擬機(jī)處理、數(shù)據(jù)庫代理等工作。在網(wǎng)絡(luò)編程方面,它還廣泛應(yīng)用于web應(yīng)用、API應(yīng)用等領(lǐng)域。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。