package services import ( "eta_gn/eta_api/utils" "fmt" "time" ) // CaptchaRedis Redis验证器 type CaptchaRedis struct{} // Set 实现验证器set方法 func (r CaptchaRedis) Set(id string, value string) (err error) { if utils.Rc == nil { err = fmt.Errorf("redis config err") return } key := utils.CaptchaCachePrefix + id b := utils.Rc.SetNX(key, value, time.Minute*5) if !b { err = fmt.Errorf("redis setnx err") } return } // Get 实现原验证器get方法 func (r CaptchaRedis) Get(id string, clear bool) (code string) { if utils.Rc == nil { return } key := utils.CaptchaCachePrefix + id val, err := utils.Rc.RedisString(key) if err != nil { return } code = val // clear为true时验证通过删除验证码 if clear { _ = utils.Rc.Delete(key) } return } // Verify 实现原验证器verify方法 func (r CaptchaRedis) Verify(id, answer string, clear bool) bool { v := r.Get(id, clear) return v == answer }