mirror of
https://gitee.com/xiangheng/x_admin.git
synced 2025-12-24 08:12:55 +08:00
修复验证码文字Y轴不正确
This commit is contained in:
@@ -17,7 +17,7 @@ var captchaConfig = captcha_config.Config{
|
||||
Text: "",
|
||||
},
|
||||
ClickWord: &captcha_config.ClickWordConfig{
|
||||
FontSize: 22,
|
||||
FontSize: 24,
|
||||
FontNum: 3,
|
||||
AllFontNum: 7,
|
||||
XOffset: 8,
|
||||
|
||||
@@ -2,7 +2,7 @@ package captcha_config
|
||||
|
||||
const (
|
||||
// CodeKeyPrefix 缓存key前缀
|
||||
CodeKeyPrefix = "RUNNING:CAPTCHA:%s"
|
||||
CodeKeyPrefix = "x:captcha:%s"
|
||||
|
||||
// BlockPuzzleCaptcha 滑动验证码服务标识
|
||||
BlockPuzzleCaptcha = "blockPuzzle"
|
||||
|
||||
@@ -222,6 +222,7 @@ func (b *BlockPuzzleCaptchaService) Check(token string, pointJson string) error
|
||||
return nil
|
||||
}
|
||||
|
||||
cache.Delete(codeKey)
|
||||
return errors.New("验证失败")
|
||||
}
|
||||
|
||||
|
||||
@@ -54,15 +54,19 @@ func (c *ClickWordCaptchaService) Check(token string, pointJson string) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
XOffset := c.factory.config.ClickWord.XOffset
|
||||
YOffset := c.factory.config.ClickWord.YOffset
|
||||
|
||||
fontSize := c.factory.config.ClickWord.FontSize
|
||||
for i, pointVO := range cachePoint {
|
||||
targetPoint := userPoint[i]
|
||||
userTargetPoint := userPoint[i]
|
||||
startX := pointVO.X - c.factory.config.ClickWord.XOffset
|
||||
endX := pointVO.X + fontSize + c.factory.config.ClickWord.XOffset
|
||||
|
||||
if targetPoint.X >= pointVO.X-XOffset && targetPoint.X <= pointVO.X+fontSize+XOffset && targetPoint.Y >= pointVO.Y-YOffset && targetPoint.Y <= pointVO.Y+fontSize+YOffset {
|
||||
startY := pointVO.Y - c.factory.config.ClickWord.YOffset
|
||||
endY := pointVO.Y + fontSize + c.factory.config.ClickWord.YOffset
|
||||
if userTargetPoint.X >= startX && userTargetPoint.X <= endX && userTargetPoint.Y >= startY && userTargetPoint.Y <= endY {
|
||||
|
||||
} else {
|
||||
c.factory.GetCache().Delete(codeKey)
|
||||
return errors.New("验证失败")
|
||||
}
|
||||
}
|
||||
@@ -130,7 +134,7 @@ func (c *ClickWordCaptchaService) getImageData(image *util.ImageUtil) ([]vo.Poin
|
||||
key := util.RandString(16)
|
||||
|
||||
for k, s := range AllWord {
|
||||
fontSize := util.RandomInt(c.factory.config.ClickWord.FontSize-2, c.factory.config.ClickWord.FontSize+2)
|
||||
fontSize := util.RandomInt(c.factory.config.ClickWord.FontSize-3, c.factory.config.ClickWord.FontSize+1)
|
||||
|
||||
point := c.randomWordPoint(image.Width, image.Height, fontSize)
|
||||
point.SetSecretKey(key)
|
||||
|
||||
@@ -112,7 +112,7 @@ func (i *ImageUtil) SetArtText(text string, fontsize int, point vo.PointVO) erro
|
||||
// 设置绘制操作的源图像,通常为 image.Uniform
|
||||
fc.SetSrc(image.NewUniform(color.RGBA{R: uint8(RandomInt(1, 200)), G: uint8(RandomInt(1, 200)), B: uint8(RandomInt(1, 200)), A: 255}))
|
||||
// 设置水印地址
|
||||
pt := freetype.Pt(point.X, point.Y)
|
||||
pt := freetype.Pt(point.X, point.Y+fontsize)
|
||||
// 根据 Pt 的坐标值绘制给定的文本内容
|
||||
_, err := fc.DrawString(text, pt)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user