gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章golang包快速生成base64验证码的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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包 。

?
1
go get -u github.com/mojocn/base64Captcha

创建图像验证码 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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")
}

验证图像验证码 。

?
1
2
3
4
5
6
7
8
9
import "github.com/mojocn/base64Captcha"
func verfiyCaptcha(idkey,verifyValue string){
   verifyResult := base64Captcha.VerifyCaptcha(idkey, verifyValue)
   if verifyResult {
     //success
   } else {
     //fail
   }
}

使用golang搭建API服务 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// 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
   //接收客户端发送来的请求参数
   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代码 。

?
1
2
cd $GOPATH /src/github .com /mojocn/captcha/examples
go run main.go

访问 http://localhost:777 。

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

原文链接:https://www.cnblogs.com/dfsxh/p/10243542.html 。

最后此篇关于golang包快速生成base64验证码的方法的文章就讲到这里了,如果你想了解更多关于golang包快速生成base64验证码的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com