Sie müssen einen entry_point
für Ihre Firewall definieren, damit Sie eine nicht autorisierte Antwort zurückgeben können. Informationen zu Einstiegspunkten finden Sie in der Dokumentation here. Ich werde den Absatz im Falle zukünftiger Anfragen hier kopieren.
Wenn der Benutzer überhaupt nicht authentifiziert ist (d. H. Wenn der Tokenspeicher noch kein Token hat), wird der Einstiegspunkt der Firewall aufgerufen, um den Authentifizierungsprozess zu starten. Ein Einstiegspunkt sollte AuthenticationEntryPointInterface implementieren, das nur eine Methode hat: start(). Diese Methode empfängt das aktuelle Request-Objekt und die Ausnahme, durch die der Ausnahme-Listener ausgelöst wurde. Die Methode sollte ein Response-Objekt zurückgeben. Dies kann zum Beispiel die Seite sein, die das Login-Formular enthält, oder, im Falle der Basic-HTTP-Authentifizierung, eine Antwort mit einem WWW-Authenticate-Header, der den Benutzer auffordert, seinen Benutzernamen und sein Passwort einzugeben.
Damit Sie dies tun können, müssen Sie eine Klasse erstellen, die als Dienst definiert wird.
Es soll wie folgt aussehen:
namespace MyBundle\Service;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
class CustomEntryPoint implements AuthenticationEntryPointInterface
{
public function start(Request $request, AuthenticationException $authException = null)
{
$response = new Response("", Response::HTTP_UNAUTHORIZED);
return $response;
}
}
Und in Ihrer services.yml
Datei
services:
service.entry_point:
class: MyBundle\Service\CustomEntryPoint
Und schließlich die Service-ID service.entry_point
auf Ihre entry_point
Option in firewall
Abschnitt security.yml
Datei übergeben.
Dies sollte den Trick tun.
Ist es möglich, Auth mit 'entry_point' zu deaktivieren? –