Heim  >  Artikel  >  Java  >  Wie ignoriere ich sensible Felder in JSON-Antworten von Spring MVC?

Wie ignoriere ich sensible Felder in JSON-Antworten von Spring MVC?

Barbara Streisand
Barbara StreisandOriginal
2024-10-26 09:40:30691Durchsuche

How to Ignore Sensitive Fields in JSON Responses from Spring MVC?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn