1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
| package captcha
|
| import (
| "context"
| "time"
|
| "github.com/mojocn/base64Captcha"
| "go.uber.org/zap"
| "srm/global"
| )
|
| func NewDefaultRedisStore() *RedisStore {
| return &RedisStore{
| Expiration: time.Second * 180,
| PreKey: "CAPTCHA_",
| }
| }
|
| 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 {
| 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
| }
|
|