是否可以在 Bean 级别控制 cayenne 日志记录 - 以停止记录密码

Posted

技术标签:

【中文标题】是否可以在 Bean 级别控制 cayenne 日志记录 - 以停止记录密码【英文标题】:Is it possible to control cayenne logging at a Bean level - in order to stop logging passwords 【发布时间】:2019-04-04 20:22:59 【问题描述】:

DEBUG 模式下使用 Java 应用程序运行 Cayenne 时,cayenne 操作是可见的 - 密码 可以在日志中看到,当密码被更改。

无法找到有关在 bean 或类级别控制日志记录的信息。 日志看起来像 !MESSAGE [batch bind: 1->USERPWD:'1923a3d170120bb7709ef2f733c0cd...', 2->SECURID:19]

最好停止记录所有与密码相关的更改

【问题讨论】:

【参考方案1】:

您的密码已经过哈希处理(这很棒),并且哈希值已被修整,因此您不会暴露太多信息。但是如果你想格外小心,你可以安装自己的JdbcEventLogger

ServerRuntime rt = ServerRuntime.builder()
   .addModule(b -> b.bind(JdbcEventLogger.class).to(MyJdbcEventLogger.class)
   ....

在 Cayenne 4.1 中,MyJdbcEventLogger 可以继承 Slf4jJdbcEventLogger,覆盖其 appendParameters 以检查看起来像密码的参数。在 4.0 中,appendParameters 是一个私有方法,因此您可能必须在代码中复制/粘贴整个 Slf4jJdbcEventLogger 并在那里进行更改。

【讨论】:

以上是关于是否可以在 Bean 级别控制 cayenne 日志记录 - 以停止记录密码的主要内容,如果未能解决你的问题,请参考以下文章

Apache Cayenne“类未与 Cayenne 映射”

Apache Cayenne - 批量关系设置

我可以将 Cayenne 配置为使用提供程序来获取模型的新实例吗?

Apache Cayenne 将数据从非 Cayenne 应用程序插入数据库

为啥自动装配的 bean 为空?

Cayenne - 搜索依赖组合