Dokumentace směrování a middlewaru

Kompletní průvodce směrováním a middlewarem v CatCMS s využitím frameworku Hono, optimalizovaného pro Cloudflare Workers.[object Object]

Přehled

CatCMS používáHono, lehký webový framework optimalizovaný pro Cloudflare Workers. Pipeline middlewaru zpracovává každý požadavek skrze sérii vrstev předtím, než se dostane k obslužným rutinám (route handlers).

Klíčové koncepty

  • Middleware - Funkce, které se spouštějí před obslužnými rutinami (route handlers) ke zpracování požadavků
  • Pořadí middlewaru - Na pořadí záleží - middleware se spouští v pořadí, v jakém je registrován
  • Ochrana tras (routes) - Middleware může chránit trasy (routes) na základě autentizace, rolí a oprávnění
  • Objekt kontextu - Middleware může nastavit hodnoty v kontextu (c.set()) pro pozdější použití v řetězci
🔐

Authentication

JWT-based auth with KV caching

🛡️

Authorization

Fine-grained permission system

🚀

Bootstrap

System initialization on startup

📝

Logging

Request/response/security logging

Performance

Caching and security headers

🔌

Plugin Middleware

Route protection by plugin status


Pipeline middlewaru

Pipeline middlewaru se pro každý požadavek spouští v následujícím pořadí:

Middleware Configuration

Pořadí spouštění middlewaru


Request

Bootstrap Middleware → Check/run system initialization

Logging Middleware → Log request start

Security Logging → Check for suspicious patterns

Performance Logging → Track request timing

Standard Middleware → CORS, security headers, etc.

Route-specific Middleware → Auth, roles, permissions

Route Handler → Execute business logic

Logging Middleware → Log request completion

Response

Autentizační middleware

Autentizační systém používá tokeny JWT uložené v cookies typu HTTP-only.

Správce autentizace

Auth Manager

Middleware requireAuth

Vyžaduje platnou autentizaci pro přístup k trase (route).

Require Auth

Jak to funguje:

  1. Zkontroluje token v Authorization hlavičce (Bearer token)
  2. Pokud není v hlavičce, použije auth_token cookie
  3. Ověří token v KV cache (TTL 5 minut)
  4. Pokud není v cache, provede ověření JWT
  5. Nastaví user objekt v kontextu pro pozdější použití
  6. Vrátí chybu 401 nebo přesměruje na přihlášení, pokud je neplatný

Middleware requireRole

Vyžaduje specifickou roli (nebo role) pro přístup k trase (route).

Role-Based Access

Hierarchie rolí:

  • admin - Plný přístup do systému
  • editor - Správa obsahu a publikování
  • viewer - Přístup pouze pro čtení

Middleware optionalAuth

Umožňuje autentizovaný i neautentizovaný přístup, ale pokud je uživatel autentizován, doplní jeho data.

Optional Auth


Autorizace a oprávnění

Jemně granulovaný systém oprávnění pro kontrolu přístupu ke specifickým zdrojům.

Správce oprávnění

Permission Manager

Middleware requirePermission

Vyžaduje specifické oprávnění pro přístup k trase (route).

Permission-Based Access

Konvence pro pojmenování oprávnění

Oprávnění se řídí vzorem: resource.action

Běžná oprávnění:

  • content.create - Vytvářet obsah
  • content.edit - Upravovat obsah
  • content.publish - Publikovat obsah
  • content.delete - Mazat obsah
  • users.create - Vytvářet uživatele
  • users.edit - Upravovat uživatele
  • users.delete - Mazat uživatele
  • media.upload - Nahrávat mediální soubory
  • media.delete - Mazat mediální soubory

Bootstrap middleware

Zajišťuje inicializaci systému při spuštění workeru.

Účel

Bootstrap middleware se spouští jednou pro každou instanci Cloudflare Workeru za účelem:

  1. Spustit čekající databázové migrace
  2. Synchronizovat konfigurace kolekcí
  3. Inicializovat jádrové pluginy
  4. Nainstalovat demo pluginy (pouze ve vývojovém prostředí)

Bootstrap Middleware

Implementace

Bootstrap Process


Logovací middleware

Komplexní logování požadavků/odpovědí s bezpečnostním monitorováním.

Standardní logovací middleware

Loguje všechny HTTP požadavky a odpovědi.

Logging

Co loguje:

  • Metodu požadavku, URL a hlavičky
  • Stavový kód odpovědi
  • Dobu trvání požadavku
  • ID uživatele (pokud je autentizován)
  • IP adresu a user agent
  • ID požadavku (vygenerované UUID)

Bezpečnostní logovací middleware

Monitoruje podezřelou aktivitu a bezpečnostní události.

Security Logging

Co monitoruje:

  • Podezřelé vzory požadavků (pokusy o SQL injection, XSS)
  • Neúspěšná přihlášení
  • Přístupy do administrace
  • Pokusy o neoprávněný přístup

Detekovány podezřelé vzory:

const suspiciousPatterns = [
/script[^>]*>/i,        // XSS attempts
/javascript:/i,         // JavaScript protocol
/on\w+\s*=/i,          // Event handlers
/\.\.\/\.\.\//,        // Directory traversal
/\/etc\/passwd/i,      // System file access
/union\s+select/i,     // SQL injection
/drop\s+table/i        // SQL injection
]

Middleware pro logování výkonu

Sleduje pomalé požadavky pro monitorování výkonu.

Performance Logging


Middleware pro výkon

Middleware pro cachování, kompresi a bezpečnostní hlavičky.

Middleware pro hlavičky cache

Přidává do odpovědí hlavičky cache-control.

Cache Headers

Jak to funguje:

  • Cachuje pouze úspěšné HTML odpovědi (status 200)
  • Nastavuje Cache-Control: private, max-age={maxAge}
  • Privátní cachování zabraňuje CDN cachovat stránky pro přihlášené uživatele

Middleware pro bezpečnostní hlavičky

Přidává bezpečnostní hlavičky do všech odpovědí.

Security Headers

Přidané hlavičky:

'X-Content-Type-Options': 'nosniff'
'X-Frame-Options': 'SAMEORIGIN'
'X-XSS-Protection': '1; mode=block'

Middleware pro pluginy

Řídí přístup k trasám (routes) pluginů na základě stavu jejich aktivace.

Middleware requireActivePlugin

Zajišťuje, že je plugin aktivní, než povolí přístup k jeho trasám (routes).

Plugin Middleware

Jak to funguje:

  1. Dotazuje se databáze na stav pluginu
  2. Vrátí chybu 404 s uživatelsky přívětivou zprávou, pokud plugin není aktivní
  3. Povolí pokračování požadavku, pokud je plugin aktivní
  4. V případě selhání dotazu do databáze povolí přístup (fails open)

Struktura tras (routes)

CatCMS organizuje trasy (routes) do logických modulů.

Veřejné trasy (routes)

Není vyžadována autentizace.

Public Routes

Administrační trasy (routes)

Vyžaduje autentizaci + roli admina nebo editora.

Admin Routes


Vytváření vlastního middlewaru

Základní struktura middlewaru

Middleware Template

Příklad: Middleware pro omezení počtu požadavků (Rate Limiting)

Rate Limiter

Middleware Best Practices

  • Udržujte middleware zaměřený na jedinou zodpovědnost - Minimalizujte databázové dotazy v middlewaru - Používejte kontextové proměnné pro předávání dat mezi middlewarem
  • Zpracovávejte chyby elegantně a poskytujte smysluplné chybové zprávy - Zvažte dopad pořadí spouštění middlewaru na výkon - Testujte middleware samostatně před integrací

Další kroky

Was this page helpful?