Je crée une application dans laquelle j'ai l'intention de prendre des données confidentielles de l'utilisateur. Mais pour les problèmes de débogage, je prévois d'enregistrer les valeurs comme pour quel nom d'utilisateur il y a un problème. Mais ne veux pas enregistrer leurs mots de passe.Annotation personnalisée pour données confidentielles
Je possède ce code exemple:
StringBuffer errorBuilder = new StringBuffer();
violations.forEach(v -> errorBuilder.append("\r\n\"")
.append(v.getPropertyPath())
.append("\": ")
.append(v.getMessage())
.append(" -- ")
.append(v.getInvalidValue())); // Avoid print here
return errorBuilder.toString();
Ceci est la classe exemple
@Getter
@Setter
public class UserCredentials {
@NotNull
@Size(min=5, max=15)
private String username;
@NotNull
@Pattern(regex=Constants.Regex.PASSWORD)
private String password;
@NotNull
@Pattern(regex=Constants.Regex.DOB)
private String dob;
@NotNull
@Pattern(regex=Constants.Regex.EMAIL)
private String email;
}
Il y a deux façons que je pensais: Pour placer un le « mot de passe » dans une liste et vérification si getPropertyPath contient des valeurs de la liste et évite d'imprimer invalidValue.
Mais y at-il une annotation ou peut-il y avoir des annotations comme @Confidential
où je peux éviter d'imprimer cette valeur.
Cela ne me dérangerait pas de créer une annotation personnalisée. J'ai pensé que de cette façon, il est beaucoup plus propre et je n'ai pas à écrire à chaque fois le nom de domaine que je vérifie en tant que confidentiel dans la liste.
Je pensais que de faire de cette façon:
StringBuffer errorBuilder = new StringBuffer();
violations.forEach(v -> {
if (v.getPropertyPath() has annotation @Confidential) { // Looking for this.
errorBuilder.append("\r\n\"")
.append(v.getPropertyPath())
.append("\": ")
.append(v.getMessage())
} else {
errorBuilder.append("\r\n\"")
.append(v.getPropertyPath())
.append("\": ")
.append(v.getMessage())
.append(" -- ")
.append(v.getInvalidValue()));
}
});
return errorBuilder.toString();
Toute réflexion sur la façon de créer cette annotation et vérifier ces scénarios?