40 - Logout & Session Expiry
Overview
Session Expiry Flow
┌──────────────────────────────────────────────────────────────────────────────┐
│ Session Expiry Architecture │
└──────────────────────────────────────────────────────────────────────────────┘
Every Request
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ @app.before_request │
│ check_session_expiry() │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Skip for: │ │
│ │ - Static files (/static/) │ │
│ │ - API endpoints (/api/) │ │
│ │ - Public routes (/, /auth/login, /setup, etc.) │ │
│ │ - OAuth callbacks (/auth/broker/) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ is_session_valid()? │ │
│ │ │ │
│ │ 1. Check session['logged_in'] exists │ │
│ │ 2. Check session['login_time'] exists │ │
│ │ 3. Compare current time with SESSION_EXPIRY_TIME │ │
│ │ - If now > expiry_time AND login_time < expiry_time → EXPIRED │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────┴─────────┐ │
│ │ │ │
│ Valid Expired │
│ │ │ │
│ ▼ ▼ │
│ Continue revoke_user_tokens() │
│ Request session.clear() │
│ Redirect to login │
└─────────────────────────────────────────────────────────────────────────────┘Session Expiry Logic
Configuration
Expiry Check
Visual Timeline
Token Revocation Process
Implementation
revoke_user_tokens Function
Session Decorator
Manual Logout
What Gets Cleared
Cache/Data
Location
Purpose
Cleared On
Why 3:00 AM IST?
Configuration Options
Session Lifetime Calculation
Key Files Reference
File
Purpose
Last updated