captcha.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package service
  2. import (
  3. "context"
  4. "github.com/gogf/gf/v2/text/gstr"
  5. "github.com/mojocn/base64Captcha"
  6. "github.com/tiger1103/gfast/v3/library/liberr"
  7. )
  8. type captcha struct{}
  9. var Captcha = new(captcha)
  10. // GetVerifyImgString 获取字母数字混合验证码
  11. func (s *captcha) GetVerifyImgString(ctx context.Context) (idKeyC string, base64stringC string) {
  12. driver := &base64Captcha.DriverString{
  13. Height: 80,
  14. Width: 240,
  15. NoiseCount: 50,
  16. ShowLineOptions: 20,
  17. Length: 4,
  18. Source: "abcdefghjkmnpqrstuvwxyz23456789",
  19. Fonts: []string{"chromohv.ttf"},
  20. }
  21. driver = driver.ConvertFonts()
  22. store := base64Captcha.DefaultMemStore
  23. c := base64Captcha.NewCaptcha(driver, store)
  24. idKeyC, base64stringC, err := c.Generate()
  25. liberr.ErrIsNil(ctx, err)
  26. return
  27. }
  28. // VerifyString 验证输入的验证码是否正确
  29. func (s *captcha) VerifyString(id, answer string) bool {
  30. driver := new(base64Captcha.DriverString)
  31. store := base64Captcha.DefaultMemStore
  32. c := base64Captcha.NewCaptcha(driver, store)
  33. answer = gstr.ToLower(answer)
  34. return c.Verify(id, answer, true)
  35. }