Expert skill for implementing session management in SSG (Static Site Generation) and SSR (Server-Side Rendering) contexts...
Context Analysis
Stateless Authentication Setup
Database Session Management
Client-Side Session Handling
Security Implementation
After activation, I will deliver:
User says: "I have a Next.js app with SSG and need to implement session management."
This Skill Instantly Activates → Delivers:
User says: "Implement session management in my SSR application."
This Skill Responds: → Creates database session management approach → Implements server-side session validation → Adds client-side session synchronization → Provides security headers configuration → Sets up session cleanup and expiration
from sqlmodel import SQLModel, Field, Session
from typing import Optional
class Session(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
user_id: str
session_token: str
expires_at: datetime
created_at: datetime
ip_address: str
user_agent: str
Session = database connection wrapper that:
- Opens DB connection
- Sends queries
- Manages transactions
- Commits or rolls back
- Closes automatically
Usage:
with Session(engine) as session:
# Open connection
# Use during request
# Auto-close after request
Why sessions are needed:
- Transaction safety
- Prevents connection leaks
- Handles commit / rollback
- Isolates each request
Rule: 1 request = 1 DB session
// Store JWT token in localStorage
localStorage.setItem('auth_token', jwt_token);
// Include in API requests
fetch('/api/protected', {
headers: {
'Authorization': `Bearer ${localStorage.getItem('auth_token')}`
}
});
from fastapi import Depends, HTTPException
from fastapi.security import HTTPBearer
security = HTTPBearer()
def validate_session(token: str = Depends(security)):
# Verify JWT token or check database session
# Return user info if valid
pass
@app.get("/protected")
def protected_route(user = Depends(validate_session)):
return {"message": "Access granted"}
// Check session on client-side after page load
if (typeof window !== 'undefined') {
const token = localStorage.getItem('auth_token');
if (token) {
// Validate token with backend
fetch('/api/validate-session', {
headers: { 'Authorization': `Bearer ${token}` }
});
}
}