fix: refresh token validate logic

This commit is contained in:
源文雨
2024-12-06 17:20:28 +09:00
parent e7667b1f8f
commit 5de5e0ffa3
2 changed files with 17 additions and 5 deletions

View File

@@ -171,7 +171,7 @@ func (t *Tokenizer) Refresh(
if crc != h.Sum64() { if crc != h.Sum64() {
return "", ErrInvalidToken return "", ErrInvalidToken
} }
if time.Now().Add(validAfter).After( // still valid after 30 mins if time.Now().Add(-validAfter).After( // still invalid even before this time
time.UnixMilli(int64(binary.LittleEndian.Uint64(data[:8]))), time.UnixMilli(int64(binary.LittleEndian.Uint64(data[:8]))),
) { ) {
return "", ErrExpiredToken return "", ErrExpiredToken

View File

@@ -3,6 +3,7 @@ package fumitok
import ( import (
"crypto/rand" "crypto/rand"
"encoding/hex" "encoding/hex"
"fmt"
"testing" "testing"
"time" "time"
) )
@@ -28,15 +29,26 @@ func TestTokenizer(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
if vid != id || addt != 0x34 { if vid != id || addt != 0x34 {
t.Fatal("id", id, "vid", vid, "addt", addt) t.Fatal("validate id", id, "vid", vid, "addt", addt)
} }
token, err = tk.Generate(id, time.Now().Add(-time.Minute), 0, 0) token2, err := tk.Generate(id, time.Now().Add(-time.Minute), 0, 0)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
t.Log(token) t.Log(token2)
_, _, err = tk.Validate(token, 0) _, _, err = tk.Validate(token2, 0)
if err != ErrExpiredToken { if err != ErrExpiredToken {
t.Fatal("unexpected err", err) t.Fatal("unexpected err", err)
} }
token, err = tk.Refresh(token, time.Now().Add(time.Minute), time.Minute*2, 0x00ff)
if err != nil {
t.Fatal(err)
}
vid, addt, err = tk.Validate(token, 0x00ff)
if err != nil {
t.Fatal(err)
}
if vid != id || addt != 0x34 {
t.Fatal("refresh id", id, "vid", vid, "addt", fmt.Sprintf("%02x", addt))
}
} }