服务号idbase64_golang包快速生成base64验证码的方法

base64Captcha快速生成base64编码图片验证码字符串

支持多种样式,算术,数字,字母,混合模式,语音模式.

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。Base64编码可用于在HTTP环境下传递较长的标识信息, 直接把base64当成是字符串方式的数据就好了

减少了http请求;数据就是图片;

为APIs微服务而设计

为什么base64图片 for RESTful 服务

Data URIs 支持大部分浏览器,IE8之后也支持.

小图片使用base64响应对于RESTful服务来说更便捷

godoc文档

安装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 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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值