wangshan 5 miesięcy temu
rodzic
commit
e0748d2777
3 zmienionych plików z 15 dodań i 12 usunięć
  1. 1 1
      go.mod
  2. 11 10
      gocaptcha/start.go
  3. 3 1
      gocaptcha/start_test.go

+ 1 - 1
go.mod

@@ -1,6 +1,6 @@
 module app.yhyue.com/moapp/jybase
 
-go 1.13
+go 1.20
 
 require (
 	app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d

+ 11 - 10
gocaptcha/start.go

@@ -51,9 +51,9 @@ func RandLightColor(n int) color.RGBA {
 	return color.RGBA{R: uint8(red), G: uint8(green), B: uint8(blue), A: a}
 }
 
-func Get(sess *httpsession.Session, w http.ResponseWriter, r *http.Request) {
-	str := RandText(4)
-	log.Println(str)
+func Get(sess *httpsession.Session, checkCode string, w http.ResponseWriter, r *http.Request) (err error) {
+	code := RandText(4)
+	log.Println(code)
 	cacheKey := fmt.Sprintf("captcha_times_%s", sess.Id())
 	var (
 		// 计次数
@@ -70,18 +70,18 @@ func Get(sess *httpsession.Session, w http.ResponseWriter, r *http.Request) {
 		captchaImage = captchaImage.DrawNoise(NoiseDensityLower, NewPointNoiseDrawer(), rn).
 			DrawNoise(NoiseDensityHigh, NewTextNoiseDrawer(42), rn).
 			DrawLine(NewBeeline(), RandDeepColor()).
-			DrawText(NewTwistTextDrawer(63, 15, 0.04), str)
+			DrawText(NewTwistTextDrawer(63, 15, 0.04), code)
 	} else if times < 6 {
 		captchaImage = captchaImage.DrawNoise(NoiseDensityLower, NewPointNoiseDrawer(), rn).
 			DrawNoise(NoiseDensityHigh, NewTextNoiseDrawer(43), rn).
 			DrawLine(NewBeeline(), RandDeepColor()).
-			DrawText(NewTwistTextDrawer(65, 14, 0.03), str).
+			DrawText(NewTwistTextDrawer(65, 14, 0.03), code).
 			DrawBlur(NewGaussianBlur(), 2, 0.15)
 	} else if times < 10 {
 		captchaImage = captchaImage.DrawNoise(NoiseDensityLower, NewPointNoiseDrawer(), rn).
 			DrawNoise(NoiseDensityHigh, NewTextNoiseDrawer(45), rn).
 			DrawLine(NewBeeline(), RandDeepColor()).
-			DrawText(NewTwistTextDrawer(66, 18, 0.04), str).
+			DrawText(NewTwistTextDrawer(66, 18, 0.04), code).
 			DrawLine(NewBeeline(), RandDeepColor()).
 			DrawBlur(NewGaussianBlur(), 2, 0.41)
 
@@ -90,7 +90,7 @@ func Get(sess *httpsession.Session, w http.ResponseWriter, r *http.Request) {
 			DrawNoise(NoiseDensityLower, NewPointNoiseDrawer(), rn).
 			DrawLine(NewBezier3DLine(), RandLightColor(rn)).
 			DrawLine(NewBeeline(), RandDeepColor()).
-			DrawText(NewTwistTextDrawer(66, 18, 0.04), str).
+			DrawText(NewTwistTextDrawer(66, 18, 0.04), code).
 			DrawBlur(NewGaussianBlur(), 2, 0.44)
 	}
 	if times == 0 {
@@ -101,8 +101,9 @@ func Get(sess *httpsession.Session, w http.ResponseWriter, r *http.Request) {
 	redis.Put("other", cacheKey, times, int(ttl))
 	if captchaImage.Error != nil {
 		log.Println(captchaImage.Error)
+		err = captchaImage.Error
+		return
 	}
-
-	_ = captchaImage.Encode(w, ImageFormatJpeg)
-
+	sess.Set(checkCode, code)
+	return captchaImage.Encode(w, ImageFormatJpeg)
 }

+ 3 - 1
gocaptcha/start_test.go

@@ -3,6 +3,7 @@ package gocaptcha
 import (
 	"app.yhyue.com/moapp/jybase/go-xweb/httpsession"
 	"app.yhyue.com/moapp/jybase/redis"
+	"fmt"
 	"net/http"
 	"testing"
 	"time"
@@ -17,6 +18,7 @@ func TestCaptcha(t *testing.T) {
 		Session = &httpsession.Session{}
 	)
 	Session.SetId("001")
-	Get(Session, W, R)
+	data, code := Get(Session, W, R)
+	fmt.Println(data, code)
 	time.Sleep(10 * time.Second)
 }