Im Allgemeinen werden alle Anmeldungsdaten in Symfony von einem Listener für das Ereignis kernel.request
ausgeführt, meist innerhalb des Firewall
Listeners der Symfony-Sicherheitskomponente. Ich habe das HWIOAuthBundle Bundle noch nicht benutzt, aber es scheint auch nur die Symfony Security Komponente zu verwenden.
Wenn Sie nur bestimmte Aktionen ausführen möchten, bevor die Anmeldung/Authentifizierung erfolgt, müssen Sie nur einen Ereignis-Listener mit der Priorität kernel.request
mit einer höheren Priorität als den Listener Firewall
registrieren.
Sie können das wie in der Symfony-Dokumentation beschrieben (Events and Event Listeners). Ihre Event Listener-Klasse in src/AppBundle/EventListener/YourListener.php
erstellen:
namespace AppBundle\EventListener;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
class YourListener
{
public function onKernelRequest(GetResponseEvent $event)
{
// do stuff
}
}
Dann wird Ihr Dienst in Ihrem app/config/services.yml
Datei registrieren:
services:
AppBundle\EventListener\YourListener:
tags:
- { name: kernel.event_listener, event: kernel.request, priority: 9 }
Nach this page die Firewall eine Priorität von 8 hat also die Priorität Ihrer Event-Listener sollte höher sein als das, was vor dem Login ausgeführt wird (ich habe im obigen Beispiel 9 verwendet).
Es kann mein Problem lösen, aber wie kann ich es zwingen, nur vor der Authentifizierung zu laufen? Jetzt läuft es in jeder Anfrage. – mikecpl
Der 'Firewall'-Listener wird ebenfalls bei jeder Anfrage ausgeführt. Was genau versuchen Sie zu tun (d. H. Welche Aktionen möchten Sie vor dem Login ausführen)? –
Ich protokolliere einige Aktionen über den nicht angemeldeten Benutzer mit Sitzungs-ID, und ich möchte diese Datensätze mit dem angemeldeten Benutzer ausfüllen, aber das Problem ist, dass die Sitzungs-ID nach der Authentifizierung geändert wird. – mikecpl