captcha_redis.go 764 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package services
  2. import (
  3. "eta_gn/eta_api/utils"
  4. "fmt"
  5. "time"
  6. )
  7. type CaptchaRedis struct{}
  8. func (r CaptchaRedis) Set(id string, value string) (err error) {
  9. if utils.Rc == nil {
  10. err = fmt.Errorf("redis config err")
  11. return
  12. }
  13. key := utils.CaptchaCachePrefix + id
  14. b := utils.Rc.SetNX(key, value, time.Minute*5)
  15. if !b {
  16. err = fmt.Errorf("redis setnx err")
  17. }
  18. return
  19. }
  20. func (r CaptchaRedis) Get(id string, clear bool) (code string) {
  21. if utils.Rc == nil {
  22. return
  23. }
  24. key := utils.CaptchaCachePrefix + id
  25. val, err := utils.Rc.RedisString(key)
  26. if err != nil {
  27. return
  28. }
  29. code = val
  30. if clear {
  31. _ = utils.Rc.Delete(key)
  32. }
  33. return
  34. }
  35. func (r CaptchaRedis) Verify(id, answer string, clear bool) bool {
  36. v := r.Get(id, clear)
  37. return v == answer
  38. }