123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package captcha
- import (
- "context"
- "time"
- "github.com/mojocn/base64Captcha"
- "go.uber.org/zap"
- "server/global"
- )
- func NewDefaultRedisStore() *RedisStore {
- return &RedisStore{
- Expiration: time.Second * 180,
- PreKey: "CAPTCHA_",
- Context: context.TODO(),
- }
- }
- type RedisStore struct {
- Expiration time.Duration
- PreKey string
- Context context.Context
- }
- func (rs *RedisStore) UseWithCtx(ctx context.Context) base64Captcha.Store {
- rs.Context = ctx
- return rs
- }
- func (rs *RedisStore) Set(id string, value string) error {
- err := global.GVA_REDIS.Set(rs.Context, rs.PreKey+id, value, rs.Expiration).Err()
- if err != nil {
- global.GVA_LOG.Error("RedisStoreSetError!", zap.Error(err))
- return err
- }
- return nil
- }
- func (rs *RedisStore) Get(key string, clear bool) string {
- val, err := global.GVA_REDIS.Get(rs.Context, key).Result()
- if err != nil {
- global.GVA_LOG.Error("RedisStoreGetError!", zap.Error(err))
- return ""
- }
- if clear {
- err := global.GVA_REDIS.Del(rs.Context, key).Err()
- if err != nil {
- global.GVA_LOG.Error("RedisStoreClearError!", zap.Error(err))
- return ""
- }
- }
- return val
- }
- func (rs *RedisStore) Verify(id, answer string, clear bool) bool {
- key := rs.PreKey + id
- v := rs.Get(key, clear)
- return v == answer
- }
|