2025-03-28 17:51:34 +08:00

37 lines
1.1 KiB
Go

package common
import (
"github.com/mojocn/base64Captcha"
)
// CaptchaBiz 定义处理验证码请求所需的方法.
type CaptchaBiz interface {
Generate(height int, width int, length int, maxSkew float64, dotCount int) (id, b64s, answer string, err error)
Verify(id, answer string, clear bool) bool
}
// captchaBiz 是 CaptchaBiz 接口的实现.
type captchaBiz struct{}
// 确保 captchaBiz 实现了 CaptchaBiz 接口.
var _ CaptchaBiz = (*captchaBiz)(nil)
func NewCaptcha() *captchaBiz {
return &captchaBiz{}
}
var captchaStore base64Captcha.Store = base64Captcha.DefaultMemStore
func (b *captchaBiz) Generate(height int, width int, length int, maxSkew float64, dotCount int) (id, b64s, answer string, err error) {
driver := base64Captcha.NewDriverDigit(height, width, length, maxSkew, dotCount)
// driver := base64Captcha.NewDriverString(config.File.Captcha.ImgHeight,
// config.File.Captcha.ImgWidth,
// 6, 1, keyLong, source, nil, nil, nil)
cp := base64Captcha.NewCaptcha(driver, captchaStore)
return cp.Generate()
}
func (b *captchaBiz) Verify(id, answer string, clear bool) bool {
return captchaStore.Verify(id, answer, clear)
}