Maison > Java > javaDidacticiel > 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
Libérer: 2024-10-26 09:40:30
original
794 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal