Fix double username in token
This commit is contained in:
parent
af9d0455f9
commit
6cba9f8f68
1 changed files with 2 additions and 7 deletions
9
main.go
9
main.go
|
|
@ -187,28 +187,23 @@ func sessionKey(username string) string {
|
||||||
|
|
||||||
const sessionTTL = 6 * time.Minute // token valid for 6 min; client refreshes every 5
|
const sessionTTL = 6 * time.Minute // token valid for 6 min; client refreshes every 5
|
||||||
|
|
||||||
// issueToken creates a new signed token, stores it in Redis, and returns it.
|
|
||||||
func issueToken(username string) (string, error) {
|
func issueToken(username string) (string, error) {
|
||||||
// Check if a valid session already exists
|
|
||||||
stored, err := rdb.Get(ctx, sessionKey(username)).Result()
|
stored, err := rdb.Get(ctx, sessionKey(username)).Result()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
// Parse out the existing token and return it
|
|
||||||
parts := strings.SplitN(stored, ":", 2)
|
parts := strings.SplitN(stored, ":", 2)
|
||||||
if len(parts) == 2 {
|
if len(parts) == 2 {
|
||||||
// Refresh TTL and return the existing token
|
|
||||||
rdb.Expire(ctx, sessionKey(username), sessionTTL)
|
rdb.Expire(ctx, sessionKey(username), sessionTTL)
|
||||||
return username + ":" + parts[0], nil
|
return parts[0], nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// No valid session — issue a new one
|
|
||||||
ts := time.Now().Unix()
|
ts := time.Now().Unix()
|
||||||
token := makeToken(username, ts)
|
token := makeToken(username, ts)
|
||||||
val := token + ":" + itoa(ts)
|
val := token + ":" + itoa(ts)
|
||||||
if err := rdb.Set(ctx, sessionKey(username), val, sessionTTL).Err(); err != nil {
|
if err := rdb.Set(ctx, sessionKey(username), val, sessionTTL).Err(); err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
return username + ":" + token, nil
|
return token, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// validateToken checks the Authorization header against the stored token.
|
// validateToken checks the Authorization header against the stored token.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue