golang包快速生成base64验证码的方法

浏览:48日期:2022-09-19

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包快速生成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 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 } 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 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

访问 http://localhost:777

到此这篇关于golang包快速生成base64验证码的方法的文章就介绍到这了,更多相关golang base64验证码内容请搜索乐呵呵网以前的文章或继续浏览下面的相关文章希望大家以后多多支持乐呵呵网!

标签: Golang
相关文章: