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!