golang包快速生成base64验证码的方法
base64Captcha快速生成base64编码图片验证码字符串
支持多种样式,算术,数字,字母,混合模式,语音模式.
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。Base64编码可用于在HTTP环境下传递较长的标识信息,直接把base64当成是字符串方式的数据就好了
减少了http请求;数据就是图片;
为APIs微服务而设计
为什么base64图片forRESTful服务
DataURIs支持大部分浏览器,IE8之后也支持.
小图片使用base64响应对于RESTful服务来说更便捷
godoc文档
在线DemoPlaygroundPoweredbyVuejs+elementUI+Axios
安装golang包
goget-ugithub.com/mojocn/base64Captcha
创建图像验证码
import"github.com/mojocn/base64Captcha"
funcdemoCodeCaptchaCreate(){
//configstructfordigits
//数字验证码配置
varconfigD=base64Captcha.ConfigDigit{
Height:80,
Width:240,
MaxSkew:0.7,
DotCount:80,
CaptchaLen:5,
}
//configstructforaudio
//声音验证码配置
varconfigA=base64Captcha.ConfigAudio{
CaptchaLen:6,
Language:"zh",
}
//configstructforCharacter
//字符,公式,验证码配置
varconfigC=base64Captcha.ConfigCharacter{
Height:60,
Width:240,
//constCaptchaModeNumber:数字,CaptchaModeAlphabet:字母,CaptchaModeArithmetic:算术,CaptchaModeNumberAlphabet:数字字母混合.
Mode:base64Captcha.CaptchaModeNumber,
ComplexOfNoiseText:base64Captcha.CaptchaComplexLower,
ComplexOfNoiseDot:base64Captcha.CaptchaComplexLower,
IsShowHollowLine:false,
IsShowNoiseDot:false,
IsShowNoiseText:false,
IsShowSlimeLine:false,
IsShowSineLine:false,
CaptchaLen:6,
}
//createaaudiocaptcha.
idKeyA,capA:=base64Captcha.GenerateCaptcha("",configA)
//以base64编码
base64stringA:=base64Captcha.CaptchaWriteToBase64Encoding(capA)
//createacharacterscaptcha.
idKeyC,capC:=base64Captcha.GenerateCaptcha("",configC)
//以base64编码
base64stringC:=base64Captcha.CaptchaWriteToBase64Encoding(capC)
//createadigitscaptcha.
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"
funcverfiyCaptcha(idkey,verifyValuestring){
verifyResult:=base64Captcha.VerifyCaptcha(idkey,verifyValue)
ifverifyResult{
//success
}else{
//fail
}
}
使用golang搭建API服务
//exampleofHTTPserverthatusesthecaptchapackage.
packagemain
import(
"encoding/json"
"fmt"
"github.com/mojocn/base64Captcha"
"log"
"net/http"
)
//ConfigJsonBodyjsonrequestbody.
typeConfigJsonBodystruct{
Idstring
CaptchaTypestring
VerifyValuestring
ConfigAudiobase64Captcha.ConfigAudio
ConfigCharacterbase64Captcha.ConfigCharacter
ConfigDigitbase64Captcha.ConfigDigit
}
varconfigC=base64Captcha.ConfigCharacter{
Height:60,
Width:240,
Mode:0,
ComplexOfNoiseText:0,
ComplexOfNoiseDot:0,
IsShowHollowLine:false,
IsShowNoiseDot:false,
IsShowNoiseText:false,
IsShowSlimeLine:false,
IsShowSineLine:false,
CaptchaLen:6,
}
//base64Captchacreatehttphandler
funcgenerateCaptchaHandler(whttp.ResponseWriter,r*http.Request){
//parserequestparameters
//接收客户端发送来的请求参数
decoder:=json.NewDecoder(r.Body)
varpostParametersConfigJsonBody
err:=decoder.Decode(&postParameters)
iferr!=nil{
log.Println(err)
}
deferr.Body.Close()
//createbase64encodingcaptcha
//创建base64图像验证码
varconfiginterface{}
switchpostParameters.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)
//oryoucandothis
//你也可以是用默认参数生成图像验证码
//base64Png:=captcha.GenerateCaptchaPngBase64StringDefault(captchaId)
//setjsonresponse
//设置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)
}
//base64Captchaverifyhttphandler
funccaptchaVerifyHandle(whttp.ResponseWriter,r*http.Request){
//parserequestparameters
//接收客户端发送来的请求参数
decoder:=json.NewDecoder(r.Body)
varpostParametersConfigJsonBody
err:=decoder.Decode(&postParameters)
iferr!=nil{
log.Println(err)
}
deferr.Body.Close()
//verifythecaptcha
//比较图像验证码
verifyResult:=base64Captcha.VerifyCaptcha(postParameters.Id,postParameters.VerifyValue)
//setjsonresponse
//设置json响应
w.Header().Set("Content-Type","application/json;charset=utf-8")
body:=map[string]interface{}{"code":"error","data":"验证失败","msg":"captchafailed"}
ifverifyResult{
body=map[string]interface{}{"code":"success","data":"验证通过","msg":"captchaverified"}
}
json.NewEncoder(w).Encode(body)
}
//startanet/httpserver
//启动golangnet/http服务器
funcmain(){
//serveVuejs+ElementUI+AxiosWebApplication
http.Handle("/",http.FileServer(http.Dir("./static")))
//apiforcreatecaptcha
http.HandleFunc("/api/getCaptcha",generateCaptchaHandler)
//apiforverifycaptcha
http.HandleFunc("/api/verifyCaptcha",captchaVerifyHandle)
fmt.Println("Serverisatlocalhost:3333")
iferr:=http.ListenAndServe("localhost:3333",nil);err!=nil{
log.Fatal(err)
}
}
运行demo代码
cd$GOPATH/src/github.com/mojocn/captcha/examples gorunmain.go
访问http://localhost:777
到此这篇关于golang包快速生成base64验证码的方法的文章就介绍到这了,更多相关golangbase64验证码内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。