session 인터페이스 수정
This commit is contained in:
@ -70,21 +70,21 @@ func (p *provider_redis) Delete(account primitive.ObjectID) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *provider_redis) Query(pk string) (*Authorization, error) {
|
||||
func (p *provider_redis) Query(pk string) (Authorization, error) {
|
||||
sk := publickey_to_storagekey(publickey(pk))
|
||||
payload, err := p.redisClient.Get(p.ctx, string(sk)).Result()
|
||||
if err == redis.Nil {
|
||||
return nil, nil
|
||||
return Authorization{}, nil
|
||||
} else if err != nil {
|
||||
return nil, err
|
||||
return Authorization{}, err
|
||||
}
|
||||
|
||||
var auth Authorization
|
||||
if err := bson.Unmarshal([]byte(payload), &auth); err != nil {
|
||||
return nil, err
|
||||
return Authorization{}, err
|
||||
}
|
||||
|
||||
return &auth, nil
|
||||
return auth, nil
|
||||
}
|
||||
|
||||
func (p *provider_redis) Touch(pk string) (bool, error) {
|
||||
@ -226,49 +226,49 @@ func (c *consumer_redis) query_internal(sk storagekey) (*sessionRedis, bool, err
|
||||
return si, true, nil
|
||||
}
|
||||
|
||||
func (c *consumer_redis) Query(pk string) (*Authorization, error) {
|
||||
func (c *consumer_redis) Query(pk string) (Authorization, error) {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
|
||||
sk := publickey_to_storagekey(publickey(pk))
|
||||
si, _, err := c.query_internal(sk)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return Authorization{}, err
|
||||
}
|
||||
|
||||
if si == nil {
|
||||
return nil, nil
|
||||
return Authorization{}, nil
|
||||
}
|
||||
|
||||
if time.Now().After(si.expireAt) {
|
||||
return nil, nil
|
||||
return Authorization{}, nil
|
||||
}
|
||||
|
||||
return si.Authorization, nil
|
||||
return *si.Authorization, nil
|
||||
}
|
||||
|
||||
func (c *consumer_redis) Touch(pk string) (*Authorization, error) {
|
||||
func (c *consumer_redis) Touch(pk string) (Authorization, error) {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
|
||||
sk := publickey_to_storagekey(publickey(pk))
|
||||
ok, err := c.redisClient.Expire(c.ctx, string(sk), c.ttl).Result()
|
||||
if err == redis.Nil {
|
||||
return nil, nil
|
||||
return Authorization{}, nil
|
||||
} else if err != nil {
|
||||
logger.Println("consumer Touch :", err)
|
||||
return nil, err
|
||||
return Authorization{}, err
|
||||
}
|
||||
|
||||
if ok {
|
||||
// redis에 살아있다.
|
||||
si, added, err := c.query_internal(sk)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return Authorization{}, err
|
||||
}
|
||||
|
||||
if si == nil {
|
||||
return nil, nil
|
||||
return Authorization{}, nil
|
||||
}
|
||||
|
||||
if !added {
|
||||
@ -277,8 +277,8 @@ func (c *consumer_redis) Touch(pk string) (*Authorization, error) {
|
||||
c.add_internal(sk, si)
|
||||
}
|
||||
|
||||
return si.Authorization, nil
|
||||
return *si.Authorization, nil
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
return Authorization{}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user