feat: enhance session security and freshness
- Sliding expiration: reset 24h TTL on every Redis session access - SameSite=Strict on login and logout cookies (was Lax) - Secure flag on logout cookie in production (was missing) - Re-fetch user from DB on every request in buildContext so role/avatar/ admin changes take effect immediately without requiring re-login Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -21,6 +21,8 @@ export async function setSession(token: string, user: SessionUser): Promise<void
|
||||
export async function getSession(token: string): Promise<SessionUser | null> {
|
||||
const data = await redis.get(`session:${token}`);
|
||||
if (!data) return null;
|
||||
// Slide the expiration window on every access
|
||||
await redis.expire(`session:${token}`, 86400);
|
||||
return JSON.parse(data) as SessionUser;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user