In unserer Anwendung müssen wir die Json-Eigenschaftswerte (nicht den Eigenschaftsnamen) für jede Anfrage und Antwort verschlüsseln / entschlüsseln.
Beispiel,
{"userName":"encrypted value", "email":"encrypted value"}
Wir verwenden Sprint boot 1.3 und verwenden @RequestBody und @ResponseBody Annotationen, um den Anfrage-JSON mit dem Objekt zu verbinden und das Antwortobjekt als JSON zu serialisieren.
Wir nicht möchten die Verschlüsselungs- / Entschlüsselungsmethode in unserer jeweiligen Controller-Methode aufrufen. Gibt es irgendeine Möglichkeit, wie wir Sprint anweisen können, die JSON-Werte zu entschlüsseln, bevor sie mit dem Anforderungsobjekt verbunden werden? Ähnlich, um die Feldwerte des Antwortobjekts vor der Konvertierung in json zu verschlüsseln? Oder das Anpassen von Jackson könnte uns helfen?
Danke!
Sie können Ihren eigenen HTTP-Nachrichtenkonverter schreiben. Da Sie Springboots verwenden, wäre das ganz einfach: Erweitern Sie einfach Ihren benutzerdefinierten Konverter von AbstractHttpMessageConverter
und markieren Sie die Klasse mit @Component
Annotation.
Von Frühjahrsdokumente :
Sie können zusätzliche Konverter hinzufügen, indem Sie einfach Beans dieses Typs in einem Spring-Boot-Kontext hinzufügen. Wenn eine hinzugefügte Bean einem Typ angehört, der ohnehin standardmäßig enthalten wäre (wie MappingJackson2HttpMessageConverter für JSON-Konvertierungen), ersetzt sie den Standardwert.
Und hier ist ein einfaches Beispiel:
%Vor%Tags und Links spring json jackson spring-boot