https://pkg.go.dev/github.com/dchest/captcha#section-readme

    1. package main
    2. import (
    3. "fmt"
    4. "github.com/dchest/captcha"
    5. "github.com/gin-gonic/gin"
    6. "github.com/gorilla/sessions"
    7. )
    8. var store = sessions.NewCookieStore([]byte("session"))
    9. func main() {
    10. r := gin.Default()
    11. r.GET("/cookie", func(this *gin.Context) {
    12. this.SetCookie("name", "zhangsan", 60*60*24, "/", "", false, true)
    13. this.JSON(200, gin.H{"cookie": true})
    14. })
    15. r.GET("/session", func(this *gin.Context) {
    16. session, _ := store.Get(this.Request, "session-name")
    17. session.Values["captcha"] = "9safji3w9jsal"
    18. session.Save(this.Request, this.Writer)
    19. this.JSON(200, gin.H{"session": true})
    20. })
    21. r.GET("/captcha", GetCaptcha)
    22. r.GET("/captcha/verify/:value", CaptchaVerify)
    23. r.Run(":8090")
    24. }
    25. func GetCaptcha(this *gin.Context) {
    26. l := 4
    27. w, h := 214, 72
    28. captchaId := captcha.NewLen(l)
    29. session, _ := store.Get(this.Request, "session-name")
    30. session.Values["captcha"] = captchaId
    31. session.Save(this.Request, this.Writer)
    32. captcha.WriteImage(this.Writer, captchaId, w, h)
    33. }
    34. func CaptchaVerify(this *gin.Context) {
    35. session, _ := store.Get(this.Request, "session-name")
    36. captchaId := session.Values["captcha"]
    37. fmt.Println(captchaId)
    38. if captcha.VerifyString(captchaId.(string), this.Param("value")) {
    39. session.Values["captcha"] = ""
    40. this.JSON(200, gin.H{"value": this.Param("value")})
    41. }else {
    42. this.JSON(201, gin.H{"value": false})
    43. }
    44. }