captcha
文档:官方
这个第三方的库挺有意思的。他具备很多优点:
- 可自定义验证码长度
- 生成的图片不需要额外内存存储,通过
path
生成即可 - 使用本地
cache
,可reload
验证码 - 通过hash生成随机数作为验证码
ID
快速使用
这个第三方库,他已经将很多东西进行了封装,你只需要按照你的需求进行调用。
生成验证码 ID
1 | go复制代码type Captcha struct { |
ID
可以生成相对应的验证码图片,然后以键的形式去校验验证码。这个还是很重要的。
获取图片
1 | go复制代码//GetImg |
Captcha
他通过验证码 ID 去生成验证码图像的二进制,你只需要将二进制信息放到 http
协议中,然后进行显示就可,这个操作不需要你利用额外的空间存储图片。
校验验证码
1 | go复制代码//CheckCode |
根据请求路径获取的字段值,Captcha
他会将 captchaId
与 value
放到本地的存储器中进行查询,如果可以查到就返回 true
。
创建路由
然后你就可以直接创建验证码的路由。
1 | go复制代码 // 创建一个验证码路由 |
这个整体流程其实不难。主要是明白,他这个流程是怎么样的!
扩展
更改存储器
他设置了两个常量 CollectNum
和 Expiration
。
CollectNum
代表创建验证码的数量会去触发垃圾回收。(一次清理过期验证码的数量)Expiration
代表验证码的过期时间
1 | go复制代码func init() { |
创建音频验证码
1 | go复制代码func (c *Captcha) GetAudio(ctx *gin.Context) { |
参考文章
本文转载自: 掘金