Middleware: Request-Regeln, Eingabe- und Ausgabe-Listener
Diese Seite richtet sich an Entwickler, die übergreifende Request-Logik in Middleware (Laravel, Slim, Laminas, Express, Django), in Before- und After-Filter (Rails, CodeIgniter) oder in Kernel-Listener (Symfony) legen. Exponential hat keinen allgemeinen Middleware-Stack, dem Sie Klassen hinzufügen. Es hat drei Stellen, die zusammen die meisten Anwendungsfälle von Middleware abdecken.
Inhalt
- Die drei Stellen
- Request-Regeln
- Eingabe- und Ausgabe-Listener
- Übliche Middleware, übertragen
- Was keine Entsprechung hat
Die drei Stellen
| Stelle | Läuft | Kann | Konfiguriert in |
|---|---|---|---|
Listener für request/preinput und request/input | vor URL-Übersetzung und Routing | den Request untersuchen, ihn ablehnen (wie es die CSRF-Prüfung tut), Zustand einrichten | site.ini [Event] Listeners[] |
| Request-Regeln | nach der Übersetzung des URL-Alias und nachdem die Richtlinien die View erlaubt haben | zulassen, nicht gefunden, verboten, anmelden, weiterleiten, zum Alias weiterleiten, umschreiben, protokollieren | settings/requestrules.ini |
Filter für response/preoutput und response/output | nachdem das Pagelayout gerendert wurde | die endgültige Ausgabe ändern (wie es das Einfügen des Formular-Tokens tut) | site.ini [Event] Listeners[] |
Die Reihenfolge innerhalb eines Requests steht unter Der Request-Lebenszyklus.
Request-Regeln
Regeln sind Einstellungen: Bedingungen und eine Aktion, der Reihe nach geprüft; die erste Regel, deren Bedingungen alle zutreffen, entscheidet (Request-Regeln, vollständiger Leitfaden mit sechzehn Rezepten: Vollständige Sicherheit für Views).
# settings/siteaccess/<site>/requestrules.ini.append.php
[RequestRuleSettings]
RuleList[]=members_area
[Rule-members_area]
Description=Below node 864, anonymous visitors sign in first and come back.
Conditions[subtree]=864
Conditions[user]=anonymous
Action=login
*/ ?>- 25 Bedingungen, darunter
requested_via(System, Alias, Platzhalter, Startseite),uri,module_view,view_mode,node,subtree,class,section,state,user,role,policy,siteaccess,host,header,ipundfact. - 8 Aktionen:
allow,notfound,forbidden,login,redirect,redirect_to_alias,rewrite,log. - Regeln nehmen nur Zugriff weg oder schicken den Besucher woandershin; sie gewähren nie einen Zugriff, den eine Richtlinie verweigert hat.
- Jede Antwort außer
allowwird mitprivate, no-storegesendet. - Prüfen Sie, was die Regeln entscheiden, ohne etwas zu ändern:
php bin/php/ezrequestrules.php -s site --uri=content/view/full/2.
In PHP können Sie Bedingungen, Aktionen, Fakten (ezpRequestFactProvider) und ganze zur Laufzeit berechnete Regelsätze
(ezpRequestRuleProvider) ergänzen, registriert in [RequestRuleSettings]
(Die Regeln in PHP erweitern).
Eingabe- und Ausgabe-Listener
ezformtoken ist das Vorbild eines Middleware-Paars in Exponential. Seine settings/site.ini.append.php registriert:
[Event]
Listeners[]=request/input@ezxFormToken::input
Listeners[]=response/output@ezxFormToken::outputezxFormToken::input() prüft das Token jedes POST vor dem Routing; ezxFormToken::output() fügt das versteckte
Token-Feld jedem Formular mit method="post" im endgültigen HTML hinzu. Ein Filter-Listener wie response/output
muss den Wert zurückgeben, den er erhält, geändert oder nicht (Ereignisse und Listener).
Übliche Middleware, übertragen
| Middleware | In Exponential |
|---|---|
| Authentifizierung für einen Bereich erforderlich | Siteaccess-Einstellung RequireUserLogin; eine Request-Regel mit Action=login; functions der View |
| Autorisierung | Richtlinien an der View (functions), Objektprüfungen in der View (Autorisierung) |
| CSRF | ezformtoken (Formulare und CSRF) |
| IP-Freigabeliste für einen Bereich | eine Request-Regel mit Conditions[ip] |
| Alte Adressen weiterleiten | URL-Platzhalter oder eine Request-Regel mit redirect (Sprechende URLs) |
| Wartungsmodus | expMaintenance in index.php (php bin/php/maintenance.php on) (Wartungsmodus) |
| Sicherheits-Header, Content Security Policy | site.ini [ContentSecurityPolicy] und die Sicherheits-Header (Content Security Policy) |
| Response-Caching | der View-Cache, der rollenbewusste HTTP-Cache, der Velocity-Response-Cache (Caching) |
| Request-Protokollierung | Request-Logs und das Audit-Protokoll (Request-Logs, Audit-Protokoll) |
| Vertrauenswürdige Proxies | site.ini [HTTPHeaderSettings] TrustedProxies[] (Vertrauenswürdige Proxies) |
Was keine Entsprechung hat
- Middleware-Listen pro Route (
->middleware('auth')an einer Route): Verwenden Siefunctionsder View und Request-Regeln mit einer Bedingungmodule_view. - Den gesamten Aufruf in eine Closure einhüllen (
$next($request)): Listener laufen davor oder danach, nicht darum herum. Die Runnable-Ereignisse (runnable/view/beforeundafter) kommen dem für eine einzelne View am nächsten. - Reihenfolge der Middleware nach Priorität: Listener laufen in der Reihenfolge von
Listeners[], Regeln in der Reihenfolge vonRuleList[].
Verwandte Seiten
- Härtung
- Sicherheit für Anwendungen
- Muster: Event-Hook
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.