()
| 93 | } |
| 94 | |
| 95 | func (s *sessionStore) create() (string, time.Time, error) { |
| 96 | buf := make([]byte, 32) |
| 97 | if _, err := rand.Read(buf); err != nil { |
| 98 | return "", time.Time{}, err |
| 99 | } |
| 100 | token := hex.EncodeToString(buf) |
| 101 | expiresAt := time.Now().Add(sessionTTL) |
| 102 | s.mu.Lock() |
| 103 | s.sessions[token] = expiresAt |
| 104 | s.persistLocked() |
| 105 | s.mu.Unlock() |
| 106 | return token, expiresAt, nil |
| 107 | } |
| 108 | |
| 109 | func (s *sessionStore) isValid(token string) bool { |
| 110 | if strings.TrimSpace(token) == "" { |