enhance(session):基本完成用于控制会话存储的函数。

This commit is contained in:
徐涛 2022-08-11 21:04:33 +08:00
parent cf93574294
commit 8f4e0320fd

34
cache/session.go vendored
View File

@ -1,42 +1,22 @@
package cache package cache
import ( import (
"electricity_bill_calc/global"
"electricity_bill_calc/model" "electricity_bill_calc/model"
"fmt" "fmt"
"time" "time"
"github.com/go-redis/redis/v8"
"github.com/vmihailenco/msgpack/v5"
) )
func CacheSession(session *model.Session) error { func CacheSession(session *model.Session) error {
key := fmt.Sprintf("session:%s", session.Token) key := fmt.Sprintf("session:%s", session.Token)
serializedSession, err := msgpack.Marshal(session) return Cache(key, session, 2*time.Hour)
if err != nil {
return err
}
validRemains := time.Until(session.ExpiresAt)
cmd := global.RedisConn.SetNX(global.Ctx, key, serializedSession, validRemains)
return cmd.Err()
} }
func RetreiveSession(token string) (*model.Session, error) { func RetreiveSession(token string) (*model.Session, error) {
key := fmt.Sprintf("session:%s", token) key := fmt.Sprintf("session:%s", token)
result, err := global.RedisConn.Get(global.Ctx, key).Result() return Retreive[model.Session](key)
if err != nil { }
if err == redis.Nil {
return nil, nil func HasSession(token string) (bool, error) {
} else { key := fmt.Sprintf("session:%s", token)
return nil, err return Exists(key)
}
}
session := &model.Session{}
err = msgpack.Unmarshal([]byte(result), session)
if err != nil {
return nil, err
}
return session, nil
} }