godoc
作者 EricZhou 博客
github官网
被引用的captcha库github官网
这个包使用base64编码生成的Captcha发送给客户端,之后获取客户端的输入根据id查找答案进行匹配。
不过这个库引用的captcha库说明了这个库可以被先进的OCR识别,所以生产环境还是算了,可以拿来装逼
这个库的关键是使用store接口和driver接口调用base64Captcha.NewCaptcha函数生成一个验证码生成对象Captcha,然后通过Captcha的方法生成base64,store的方法验证字符串
store接口
store接口用于存放生成id到base64字符串的映射。base64Captcha.DefaultMemStore为内建stor只能用于单机e。集群部署可以将redis的操作封装到store接口。
store对象通常作为全局变量,因为需要它来进行验证
1
2
3
4
5
6
7
8
9
10
11
|
type Store interface {
// Set sets the digits for the captcha id.
Set(id string, value string)
// Get returns stored digits for the captcha id. Clear indicates
// whether the captcha must be deleted from the store.
Get(id string, clear bool) string
//Verify captcha's answer directly
Verify(id, answer string, clear bool) bool
}
|
使用内建对象:
1
|
var store = base64Captcha.DefaultMemStore
|
driver接口
driver接口用于生成图片和验证答案
1
2
3
4
5
6
7
|
// Driver captcha interface for captcha engine to to write staff
type Driver interface {
//DrawCaptcha draws binary item
DrawCaptcha(content string) (item Item, err error)
//GenerateIdQuestionAnswer creates rand id, content and answer
GenerateIdQuestionAnswer() (id, q, a string)
}
|
通常这个我们使用自带的driver,都是结构体可以直接用结构体字面量
- base64Captcha.DriverDigit
- base64Captcha.DriverString
- base64Captcha.DriverChinese
- base64Captcha.DriverMath
Captcha对象
1
2
3
4
5
6
7
8
|
//生成captcha对象
c := base64Captcha.NewCaptcha(driver, store)
//生成图片
id, bs64, err := c.Generate()
//验证
store.Verify(id int, VerifyValue string, default bool)
|