https://pkg.go.dev/github.com/dchest/captcha#section-readme
package main
import (
"fmt"
"github.com/dchest/captcha"
"github.com/gin-gonic/gin"
"github.com/gorilla/sessions"
)
var store = sessions.NewCookieStore([]byte("session"))
func main() {
r := gin.Default()
r.GET("/cookie", func(this *gin.Context) {
this.SetCookie("name", "zhangsan", 60*60*24, "/", "", false, true)
this.JSON(200, gin.H{"cookie": true})
})
r.GET("/session", func(this *gin.Context) {
session, _ := store.Get(this.Request, "session-name")
session.Values["captcha"] = "9safji3w9jsal"
session.Save(this.Request, this.Writer)
this.JSON(200, gin.H{"session": true})
})
r.GET("/captcha", GetCaptcha)
r.GET("/captcha/verify/:value", CaptchaVerify)
r.Run(":8090")
}
func GetCaptcha(this *gin.Context) {
l := 4
w, h := 214, 72
captchaId := captcha.NewLen(l)
session, _ := store.Get(this.Request, "session-name")
session.Values["captcha"] = captchaId
session.Save(this.Request, this.Writer)
captcha.WriteImage(this.Writer, captchaId, w, h)
}
func CaptchaVerify(this *gin.Context) {
session, _ := store.Get(this.Request, "session-name")
captchaId := session.Values["captcha"]
fmt.Println(captchaId)
if captcha.VerifyString(captchaId.(string), this.Param("value")) {
session.Values["captcha"] = ""
this.JSON(200, gin.H{"value": this.Param("value")})
}else {
this.JSON(201, gin.H{"value": false})
}
}