spring 如何在logfiles/console中排除SimplePOJO的某些字段

xurqigkl  于 2023-04-10  发布在  Spring
关注(0)|答案(1)|浏览(82)

您好,我正在考虑限制密码不登录在日志控制台,因为我觉得这样暴露密码不安全。我如何从控制台/文件上的日志中排除特定变量?我们可以考虑这里的所有场景,应用程序服务器日志,logstash日志,GCloud日志记录。只是想排除它显示在那里。下面是简单的请求。我知道 transient 不工作在这里,但只是添加它的限制文件。下面是来自UI的请求,其中输入payLoad传递给API

{
    name:"testLog";
    password:"Password@1243124242o955";
    text:"eerere";
    address:"hrerhjelr";

}

我的登录API接受请求到请求体中

public ResponseEntity<User> login(@RequestBody User userRequestPayLoad) 
 {
   LOGGER.info("User details {}",userReqPayload); //Payload
   --login validation
   --blah---
   --blah---  
  }

下面是Map的用户POJO

class User implements Serializable{
String name;
@Transient
String password;
String text;
String address;

}
wztqucjr

wztqucjr1#

依赖于toString()@Transient是不可靠的。其中一个日志附加器可以使用反射,从而读取每个属性。
更可靠的方法是:创建一个对象的副本,删除任何敏感的属性,如password,并使用这个经过清理的副本进行日志记录。然后你不需要关心日志记录是如何完成的,因为你只是不传递任何敏感数据到日志记录器。

相关问题