1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package captcha
- import (
- "context"
- "github.com/flipped-aurora/gin-vue-admin/server/global"
- "github.com/mojocn/base64Captcha"
- "go.uber.org/zap"
- "time"
- )
- 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) {
- 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))
- }
- }
- 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
- }
|