diff --git a/session/redis/provider.go b/session/redis/provider.go index fa80b24..d18f8c9 100644 --- a/session/redis/provider.go +++ b/session/redis/provider.go @@ -67,10 +67,17 @@ func (rsp *SessionProvider) RenewAccessToken(ctx *ginx.Context) error { if err != nil { return err } + + // 更新 claims 中的过期时间为当前时间加上配置的过期时间 claims := jwtClaims.Data + claims.Expiration = time.Now().Add(rsp.expiration).UnixMilli() + + // 生成新的 access token accessToken, err := rsp.m.GenerateAccessToken(claims) rsp.TokenCarrier.Inject(ctx, accessToken) - return err + + // Redis 续期 Session + return rsp.client.Expire(ctx, sessionKey(claims.SSID), rsp.expiration).Err() } // NewSession 的时候,要先把这个 data 写入到对应的 token 里面 diff --git a/session/redis/session.go b/session/redis/session.go index 327269e..01964a9 100644 --- a/session/redis/session.go +++ b/session/redis/session.go @@ -76,8 +76,12 @@ func newRedisSession( client redis.Cmdable, cl session.Claims) *Session { return &Session{ client: client, - key: "session:" + ssid, + key: sessionKey(ssid), expiration: expiration, claims: cl, } } + +func sessionKey(ssid string) string { + return "session:" + ssid +}