mirror of
https://github.com/bufanyun/hotgo.git
synced 2025-01-23 19:00:24 +08:00
66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
// Package captcha
|
|
// @Link https://github.com/bufanyun/hotgo
|
|
// @Copyright Copyright (c) 2023 HotGo CLI
|
|
// @Author Ms <133814250@qq.com>
|
|
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
package captcha
|
|
|
|
import (
|
|
"context"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/gogf/gf/v2/text/gstr"
|
|
"github.com/mojocn/base64Captcha"
|
|
"image/color"
|
|
)
|
|
|
|
// Generate 生成验证码
|
|
func Generate(ctx context.Context) (id string, base64 string) {
|
|
// 字符
|
|
// driver := &base64Captcha.DriverString{
|
|
// Height: 42,
|
|
// Width: 100,
|
|
// //NoiseCount: 50,
|
|
// //ShowLineOptions: 20,
|
|
// Length: 4,
|
|
// BgColor: &color.RGBA{
|
|
// R: 255,
|
|
// G: 250,
|
|
// B: 250,
|
|
// A: 250,
|
|
// },
|
|
// Source: "0123456789", // abcdefghjkmnpqrstuvwxyz23456789
|
|
// Fonts: []string{"chromohv.ttf"},
|
|
// }
|
|
|
|
// 算数
|
|
driver := &base64Captcha.DriverMath{
|
|
Height: 42,
|
|
Width: 100,
|
|
NoiseCount: 0,
|
|
ShowLineOptions: 0,
|
|
BgColor: &color.RGBA{
|
|
R: 255,
|
|
G: 250,
|
|
B: 250,
|
|
A: 250,
|
|
},
|
|
Fonts: []string{"chromohv.ttf"},
|
|
}
|
|
|
|
c := base64Captcha.NewCaptcha(driver.ConvertFonts(), base64Captcha.DefaultMemStore)
|
|
id, base64, _, err := c.Generate()
|
|
if err != nil {
|
|
g.Log().Errorf(ctx, "captcha.Generate err:%+v", err)
|
|
}
|
|
return
|
|
}
|
|
|
|
// Verify 验证输入的验证码是否正确
|
|
func Verify(id, answer string) bool {
|
|
if id == "" || answer == "" {
|
|
return false
|
|
}
|
|
c := base64Captcha.NewCaptcha(new(base64Captcha.DriverString), base64Captcha.DefaultMemStore)
|
|
return c.Verify(id, gstr.ToLower(answer), true)
|
|
}
|