Grails Federsicherheit, Servlet-Filter und reagieren

8

Ich muss die Federsicherheit erweitern, um den http-Response-Inhalt zu hashen und das Ergebnis innerhalb einer Kopfzeile zu platzieren. Mein Ansatz besteht darin, einen Servlet-Filter zu erstellen, der die Antwort liest und den entsprechenden Header platziert. Der Filter ist mit Federsicherheit über ein separates Plugin registriert. Die Implementierung ist weitgehend hier .

Das gesamte Setup funktioniert einwandfrei, wenn die endgültige Anwendung "render" im Controller verwendet, um JSON an den Client auszugeben. Wenn jedoch die gleichen Daten über "Antworten" formatiert werden, wird ein 404 an den Client zurückgegeben. Ich bin nicht in der Lage, den Unterschied zu erklären.

Als Referenz ist alles die Version 2.3.11 und die Version 2.0-RC4 des Federkerns.

Registrieren Sie den Filter über doWithSpring meines Plugins

%Vor%

Meine Filterimplementierung

%Vor%

Die HttpServletResponseCopier-Implementierung. Die einzige Änderung gegenüber der Quelle besteht darin, alle 3 Methodensignaturen von write anstelle von nur einer zu überschreiben.

%Vor%

Und schließlich meine Controller-Methode in der eigentlichen Anwendung

%Vor%

Irgendein Einblick würde geschätzt werden, da ich nicht verstehe, warum das Rendern funktionieren und nicht reagieren würde. Außerdem bin ich offen für andere Ansätze, um dieses Bedürfnis zu lösen, wenn das, was ich versuche, einfach nicht in Grails funktionieren wird. Vielen Dank im Voraus.

    
Lance Staples 18.08.2015, 18:10
quelle

1 Antwort

1

Ich habe das ganze Projekt in Grals gesteckt und ein ähnliches Problem bekommen. Ich musste einige Änderungen vornehmen.

Für die Registrierung habe ich SpringSecurityUtils.clientRegisterFilter method verwendet, wie ich es von einer Bootstrap.groovy -Anwendung gemacht habe. Außerdem habe ich den Filter in resources.groovy

deklariert

Es hat mit Render funktioniert, aber 404 mit reagieren. Also änderte die Antwort auf:

%Vor%

Und es hat funktioniert, nachdem ich den Filter entfernt habe. Ich habe 404, wann immer ich deinen Filter einsetze und versucht action.gsp.

zu finden

Ich habe eine Änderung in ServletOutputStreamCopier vorgenommen, indem ich die Delegierten für die Methoden close und flush implementiert habe, und es hat beim Rendern und Antworten gut funktioniert:

%Vor%

Ich habe die Details der Antwortimplementierung nicht durchgespielt, aber ich denke, dass es Verwirrung stiftet, da es keine Möglichkeit zum Schließen oder Schließen gibt und ein Fallback zum Aufrufen der Ansicht statt zum Rendern von json verwendet wird.

Ich weiß, es ist ein bisschen spät, aber jetzt funktioniert es.

resources.groovy

%Vor%

Boostrap.groovy

%Vor%

Am besten, Eder

    
Eder Luis Jorge 13.10.2016 19:32
quelle

Tags und Links