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
|
package captcha
import (
"github.com/gin-contrib/sessions"
"github.com/gin-gonic/gin"
log "github.com/sirupsen/logrus"
"image/color"
"image/png"
"github.com/afocus/captcha"
)
//生成登录验证码
var code_cap *captcha.Captcha = captcha.New()
//生成验证码
func GenerateCode(c *gin.Context) {
//code_cap
// 设置字体
err := code_cap.SetFont("./static/comic.ttf")
if err != nil {
log.Warnf("没有加载验证码 comic.ttf 文件,请放入 static 目录下")
}
code_cap.SetSize(128, 64)
code_cap.SetDisturbance(captcha.MEDIUM)
code_cap.SetFrontColor(color.RGBA{255, 255, 255, 255})
code_cap.SetBkgColor(color.RGBA{255, 0, 0, 255}, color.RGBA{0, 0, 255, 255}, color.RGBA{0, 153, 0, 255})
// 创建验证码 4个字符 captcha.NUM 字符模式数字类型
// 返回验证码图像对象以及验证码字符串 后期可以对字符串进行对比 判断验证
img, str := code_cap.Create(4, captcha.NUM)
s := sessions.Default(c)
s.Set("code", str)
err = s.Save()
if err!=nil {
log.Errorf("验证码保存异常:= %v",err)
}
png.Encode(c.Writer, img)
}
func IsVerifyCodeOk(c *gin.Context,code string) bool{
s := sessions.Default(c)
str := s.Get("code")
//if str == nil {
// return false
//}
return code == str
}
|