Wie wird programmatisch eine JSON-Antwort zurückgegeben, nachdem ein benutzerdefinierter Filter UsernamePasswordAuthenticationFilter ausgeführt wurde?

8

Ich erstelle einen benutzerdefinierten Filter UsernamePasswordAuthenticationFilter, um den Authentifizierungsprozess zu verarbeiten. Grundsätzlich wird der benutzerdefinierte Filter ausgeführt und sollte ein JSON-Format mit Benutzerdetails und generiertem Token beantworten, wenn der Benutzer den http-Post durch die REST / Anmeldung ausführt.

Mein Problem ist, wo setze ich, um eine Antwort json auf den Client zu reagieren? Ich denke darüber nach, eine Unterklasse von SavedRequestAwareAuthenticationSuccessHandler zu erstellen und dort die JSON-Antwort festzulegen. Ist das eine gute Idee?

Jede Hilfe wird sehr geschätzt =)

Danke

    
Warner 14.10.2012, 09:42
quelle

1 Antwort

5

Sie müssen Ihren eigenen SuccessHandler implementieren und ihn in UsernamePasswordAuthenticationFilter einfügen:

%Vor%

NoRedirectStrategy: Standardmäßig wird der Filter UsernamePassword nach einer erfolgreichen Anmeldung umgeleitet, was Sie in diesem Fall wahrscheinlich nicht möchten. Beachten Sie auch, dass in der obigen Implementierung die Filterkette bei Authentifizierungserfolg beendet wird - Sie müssen sicherstellen, dass Ihr Filter die richtige Antwort rendert, verlassen Sie sich nicht auf das zugrunde liegende Servlet, um es für Sie zu tun.

Alternativ können Sie die Weiterleitung an ihrem Platz belassen und den Client an eine andere URL senden, die wiederum die gesuchte JSON-Antwort darstellt.

Beispielsicherheitskontext:

%Vor%     
rootkit 29.01.2013 20:06
quelle