package captcha import ( "sun-panel/global" "github.com/gin-gonic/gin" "github.com/mojocn/base64Captcha" ) var Store = base64Captcha.DefaultMemStore func NewDriver(width, height int) *base64Captcha.DriverString { driver := new(base64Captcha.DriverString) driver.Height = height driver.Width = width driver.NoiseCount = 0 driver.ShowLineOptions = base64Captcha.OptionShowSlimeLine | base64Captcha.OptionShowHollowLine driver.Length = 4 driver.Source = "1234567890qwertyuipkjhgfdsazxcvbnm" driver.Fonts = []string{"wqy-microhei.ttc"} return driver } // 生成图形验证码 func GenerateCaptchaHandler(id string, width, height int) string { var driver = NewDriver(width, height).ConvertFonts() c := base64Captcha.NewCaptcha(driver, Store) _, content, answer := c.Driver.GenerateIdQuestionAnswer() item, _ := c.Driver.DrawCaptcha(content) c.Store.Set(id, answer) return item.EncodeB64string() } // 验证 func CaptchaVerifyHandle(id, vcode string) bool { return Store.Verify(id, vcode, true) } // 根据key获取验证码ID func CaptchaGetIdByCookieHeader(c *gin.Context, key string) (captchaId string, err error) { captchaId, err = c.Cookie("CaptchaId") if err != nil { global.Logger.Errorf("failed to get captchaId from cookie, err:%+v\n", err) return captchaId, err } if captchaId == "" { captchaId = c.GetHeader(key) } return }