Maison  >  Article  >  Java  >  Comment ignorer les champs sensibles dans les réponses JSON de Spring MVC ?

Comment ignorer les champs sensibles dans les réponses JSON de Spring MVC ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 09:40:30691parcourir

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

Ignorer les champs sensibles dans les réponses JSON de Spring MVC

Lors du traitement d'informations sensibles dans une API RESTful, il est crucial de contrôler quels champs d'un Les objets de modèle sont exposés dans les réponses JSON. Dans Spring MVC, vous pouvez exclure dynamiquement des champs spécifiques lors de l'envoi d'un objet au format JSON.

Conception d'objet modèle avec annotation

Configurez votre classe de modèle Java (@Entity) avec l'annotation @JsonIgnoreProperties(ignoreUnknown = true). Cela ignorera toutes les propriétés inconnues lors de la désérialisation de JSON dans l'objet.

<code class="java">@Entity
@Table(name = "user")
@JsonIgnoreProperties(ignoreUnknown = true)
public class User {
    // ... (Model fields)
}</code>

Méthode du contrôleur

Dans le contrôleur Spring MVC, récupérez l'objet utilisateur de la base de données en utilisant une couche de service.

<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>

Exclusion sélective à l'aide d'annotations

Pour exclure sélectivement des champs spécifiques, annotez les méthodes getter correspondantes avec @JsonIgnore. Cela ignorera ces champs lors de la sérialisation JSON.

<code class="java">@JsonIgnore
public String getEncryptedPwd() {
    return encryptedPwd;
}</code>

Exclusion dynamique

Si la liste des champs à exclure varie en fonction de l'utilisateur, vous pouvez implémenter un solution personnalisée :

<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>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn