From 1c1d27681e4b327d5e62a67eced7c6b0657f9daf Mon Sep 17 00:00:00 2001 From: xh <11675084@qq.com> Date: Thu, 18 Sep 2025 19:38:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=AA=8C=E8=AF=81=E7=A0=81?= =?UTF-8?q?=E6=96=87=E5=AD=97Y=E8=BD=B4=E4=B8=8D=E6=AD=A3=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/app/service/commonService/captchaService.go | 2 +- server/util/aj-captcha-go/captcha_config/const.go | 2 +- .../captcha_service_block_puzzle.go | 1 + .../captcha_service/captcha_service_click_word.go | 14 +++++++++----- server/util/aj-captcha-go/util/image_util.go | 2 +- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/server/app/service/commonService/captchaService.go b/server/app/service/commonService/captchaService.go index 04c9725..a9ff938 100644 --- a/server/app/service/commonService/captchaService.go +++ b/server/app/service/commonService/captchaService.go @@ -17,7 +17,7 @@ var captchaConfig = captcha_config.Config{ Text: "", }, ClickWord: &captcha_config.ClickWordConfig{ - FontSize: 22, + FontSize: 24, FontNum: 3, AllFontNum: 7, XOffset: 8, diff --git a/server/util/aj-captcha-go/captcha_config/const.go b/server/util/aj-captcha-go/captcha_config/const.go index 09ed522..3436e3c 100644 --- a/server/util/aj-captcha-go/captcha_config/const.go +++ b/server/util/aj-captcha-go/captcha_config/const.go @@ -2,7 +2,7 @@ package captcha_config const ( // CodeKeyPrefix 缓存key前缀 - CodeKeyPrefix = "RUNNING:CAPTCHA:%s" + CodeKeyPrefix = "x:captcha:%s" // BlockPuzzleCaptcha 滑动验证码服务标识 BlockPuzzleCaptcha = "blockPuzzle" diff --git a/server/util/aj-captcha-go/captcha_service/captcha_service_block_puzzle.go b/server/util/aj-captcha-go/captcha_service/captcha_service_block_puzzle.go index 4e89bf8..c20f4d5 100644 --- a/server/util/aj-captcha-go/captcha_service/captcha_service_block_puzzle.go +++ b/server/util/aj-captcha-go/captcha_service/captcha_service_block_puzzle.go @@ -222,6 +222,7 @@ func (b *BlockPuzzleCaptchaService) Check(token string, pointJson string) error return nil } + cache.Delete(codeKey) return errors.New("验证失败") } diff --git a/server/util/aj-captcha-go/captcha_service/captcha_service_click_word.go b/server/util/aj-captcha-go/captcha_service/captcha_service_click_word.go index 9068381..83cb902 100644 --- a/server/util/aj-captcha-go/captcha_service/captcha_service_click_word.go +++ b/server/util/aj-captcha-go/captcha_service/captcha_service_click_word.go @@ -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) diff --git a/server/util/aj-captcha-go/util/image_util.go b/server/util/aj-captcha-go/util/image_util.go index fa376ad..30042bf 100644 --- a/server/util/aj-captcha-go/util/image_util.go +++ b/server/util/aj-captcha-go/util/image_util.go @@ -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 {