私は、ユーザーの機密データを取得する予定のアプリケーションを作成しています。しかし、私はユーザ名のような問題があるような値を記録する予定ですデバッグの問題については。しかし、パスワードを記録したくない。機密データのカスタム注釈
私は、このサンプルコードを持っている: リストとチェックで「パスワード」を配置するには:これはサンプルクラス
@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;
}
ある
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();
私は思った二つの方法がありますgetPropertyPathにリストからの値が含まれていて、invalidValueの印刷が行われない場合
しかし、注釈がありますか、@Confidential
のような注釈がありますが、この値を印刷しないようにすることができます。
私はカスタム注釈を作成しても構いません。私はこれがもっときれいだと思っていました。私はリストの中でConfidentialとしてチェックしているフィールド名を毎回書く必要はありません。
私はこの方法をやって考える:この注釈を作成して、これらのシナリオを確認する方法について
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();
任意の考え?周りの仕事の