micro-account/pkg/model/captcha.go
2025-02-21 16:57:10 +08:00

60 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package model
import "errors"
// Captcha 结构体定义了验证码的属性
type Captcha struct {
NonceStr string `json:"nonceStr"` // 随机字符串,用于唯一标识验证码
CanvasSrc string `json:"canvasSrc"` // 画布图像的Base64编码字符串
BlockSrc string `json:"blockSrc"` // 块图像的Base64编码字符串
BlockX int `json:"blockX"` // 块图像在画布上的X轴位置
BlockY int `json:"blockY"` // 块图像在画布上的Y轴位置
CanvasWidth int `json:"canvasWidth"` // 画布的宽度
CanvasHeight int `json:"canvasHeight"` // 画布的高度
BlockWidth int `json:"blockWidth"` // 块图像的宽度
BlockHeight int `json:"blockHeight"` // 块图像的高度
BlockRadius int `json:"blockRadius"` // 块图像的圆角半径
Place int `json:"place"` // 图像来源标识0表示URL下载1表示本地文件
}
// Verification 结构体定义了验证验证码的属性
type Verification struct {
NonceStr string `json:"nonceStr"` // 随机字符串,用于唯一标识验证码
BlockX string `json:"blockX"` // 画布图像的Base64编码字符串
}
// 检查并设置验证码的默认参数
func CheckCaptcha(captcha *Captcha) (err error) {
// 参数值不可以小于15
if captcha.CanvasWidth < 41 || captcha.CanvasHeight < 26 {
captcha.CanvasWidth = 320
captcha.CanvasHeight = 155
}
if captcha.BlockWidth < 15 || captcha.BlockHeight < 15 {
captcha.BlockWidth = 65
captcha.BlockHeight = 55
}
if captcha.BlockRadius < 5 {
captcha.BlockRadius = 9
}
if captcha.Place == 0 {
captcha.Place = 0
}
if (captcha.CanvasWidth-10)/2 <= captcha.BlockWidth {
err = errors.New("请输入符合规范的像素值")
return
}
if captcha.CanvasHeight-captcha.BlockHeight <= 10 {
err = errors.New("请输入符合规范的像素值")
return
}
return
}