另客网go项目公用的代码库

session_redis.go 985B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package auth
  2. import (
  3. "time"
  4. "git.links123.net/links123.com/pkg/utils"
  5. "github.com/go-redis/redis"
  6. )
  7. type RedisSessionStore struct{ client *redis.Client }
  8. func NewRedisSessionStore(address string, password string) *RedisSessionStore {
  9. session := &RedisSessionStore{}
  10. session.client = redis.NewClient(&redis.Options{
  11. Addr: address,
  12. Password: password,
  13. })
  14. if err := session.client.Ping().Err(); err != nil {
  15. panic(err)
  16. }
  17. return session
  18. }
  19. func (rss *RedisSessionStore) StoreJwtToken(token string, uid int64, timeout int64) error {
  20. k := utils.Md5(token)
  21. v := map[string]int64{"user_id": uid, "created": time.Now().Unix()}
  22. return rss.client.Set(k, v, time.Duration(timeout)*time.Second).Err()
  23. }
  24. func (rss *RedisSessionStore) IsExistsJwtToken(token string) bool {
  25. k := utils.Md5(token)
  26. return rss.client.Exists(k).Val() == 1
  27. }
  28. func (rss *RedisSessionStore) DeleteJwtToken(token string) bool {
  29. k := utils.Md5(token)
  30. return rss.client.Del(k).Val() == 1
  31. }