captcha_redis.go 996 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package services
  2. import (
  3. "eta/eta_mini_api/services/go_redis"
  4. "eta/eta_mini_api/utils"
  5. "fmt"
  6. "time"
  7. )
  8. // CaptchaRedis Redis验证器
  9. type CaptchaRedis struct{}
  10. // Set 实现验证器set方法
  11. func (r CaptchaRedis) Set(id string, value string) (err error) {
  12. if utils.Redis == nil {
  13. err = fmt.Errorf("redis config err")
  14. return
  15. }
  16. key := utils.CaptchaCachePrefix + id
  17. b := go_redis.SetNX(key, value, time.Minute*5)
  18. if !b {
  19. err = fmt.Errorf("redis setnx err")
  20. }
  21. return
  22. }
  23. // Get 实现原验证器get方法
  24. func (r CaptchaRedis) Get(id string, clear bool) (code string) {
  25. if utils.Redis == nil {
  26. return
  27. }
  28. key := utils.CaptchaCachePrefix + id
  29. val, err := go_redis.RedisString(key)
  30. if err != nil {
  31. return
  32. }
  33. code = val
  34. // clear为true时验证通过删除验证码
  35. if clear {
  36. _ = go_redis.Delete(key)
  37. }
  38. return
  39. }
  40. // Verify 实现原验证器verify方法
  41. func (r CaptchaRedis) Verify(id, answer string, clear bool) bool {
  42. v := r.Get(id, clear)
  43. return v == answer
  44. }