Sensible Felder in JSON-Antworten von Spring MVC ignorieren
Beim Umgang mit vertraulichen Informationen in einer RESTful-API ist es wichtig zu steuern, welche Felder eines Modellobjekte werden in JSON-Antworten verfügbar gemacht. In Spring MVC können Sie bestimmte Felder dynamisch ausschließen, während Sie ein Objekt als JSON senden.
Modellobjektdesign mit Annotation
Konfigurieren Sie Ihre Java-Modellklasse (@Entity) mit die Annotation @JsonIgnoreProperties(ignoreUnknown = true). Dadurch werden alle unbekannten Eigenschaften ignoriert, wenn JSON in das Objekt deserialisiert wird.
<code class="java">@Entity @Table(name = "user") @JsonIgnoreProperties(ignoreUnknown = true) public class User { // ... (Model fields) }</code>
Controller-Methode
Rufen Sie im Spring MVC-Controller das Benutzerobjekt aus der Datenbank mit ab eine Serviceschicht.
<code class="java">@RequestMapping(value = "/getUser/{userId}", method = RequestMethod.GET) @ResponseBody public User getUser(@PathVariable Integer userId) throws Exception { User user = userService.get(userId); return user; }</code>
Selektiver Ausschluss mithilfe von Annotationen
Um bestimmte Felder selektiv auszuschließen, kommentieren Sie die entsprechenden Getter-Methoden mit @JsonIgnore. Dadurch werden diese Felder während der JSON-Serialisierung ignoriert.
<code class="java">@JsonIgnore public String getEncryptedPwd() { return encryptedPwd; }</code>
Dynamischer Ausschluss
Wenn die Liste der auszuschließenden Felder je nach Benutzer unterschiedlich ist, können Sie eine implementieren Benutzerdefinierte Lösung:
<code class="java">@RequestMapping(value = "/getUser/{userId}", method = RequestMethod.GET) @ResponseBody public User getUser(@PathVariable Integer userId, @RequestHeader("username") String username) { User user = userService.get(userId); // Get excluded fields list based on the logged-in user List<String> excludedFields = getExcludedFields(username); // Iterate through the excluded fields and set their values to null for (String field : excludedFields) { switch (field) { case "encryptedPwd": user.setEncryptedPwd(null); break; // ... (Similar logic for other fields) } } return user; }</code>
Das obige ist der detaillierte Inhalt vonWie ignoriere ich sensible Felder in JSON-Antworten von Spring MVC?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!