Skip to content

Commit

Permalink
KeyGenFunc
Browse files Browse the repository at this point in the history
  • Loading branch information
rbcervilla authored and rcfisic committed Oct 15, 2019
1 parent 5fae401 commit 6b74520
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion redisstore.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,15 @@ type RedisStore struct {
options sessions.Options
// key prefix with which the session will be stored
keyPrefix string
// key generator
keyGen KeyGenFunc
// session serializer
serializer SessionSerializer
}

// KeyGenFunc defines a function used by store to generate a key
type KeyGenFunc func() (string, error)

// NewRedisStore returns a new RedisStore with default configuration
func NewRedisStore(client redis.UniversalClient) (*RedisStore, error) {

Expand All @@ -36,6 +41,7 @@ func NewRedisStore(client redis.UniversalClient) (*RedisStore, error) {
},
client: client,
keyPrefix: "session:",
keyGen: generateRandomKey,
serializer: GobSerializer{},
}

Expand Down Expand Up @@ -87,7 +93,7 @@ func (s *RedisStore) Save(r *http.Request, w http.ResponseWriter, session *sessi
}

if session.ID == "" {
id, err := generateRandomKey()
id, err := s.keyGen()
if err != nil {
return errors.New("redisstore: failed to generate session id")
}
Expand All @@ -111,6 +117,11 @@ func (s *RedisStore) KeyPrefix(keyPrefix string) {
s.keyPrefix = keyPrefix
}

// KeyGen sets the key generator function
func (s *RedisStore) KeyGen(f KeyGenFunc) {
s.keyGen = f
}

// Serializer sets the session serializer to store session
func (s *RedisStore) Serializer(ss SessionSerializer) {
s.serializer = ss
Expand Down

0 comments on commit 6b74520

Please sign in to comment.