Hibernate Envers:记录用户ip地址

Hibernate Envers: Log user ip address

我想在我的审计表中记录当前用户的 IP 地址,目前这是像 InetAddress.getLocalHost().toString() 那样完成的,它错误地记录了服务器 IP。

通常我可以通过自动装配一个 HttpRequest 对象来做到这一点,但这在我在监听器中重写的 newRevision() 方法中是不可能的。

您可能想看看 post。

在 Web 应用程序中,设置 ThreadLocal 变量的最佳位置通常是在 FilterInterceptor 之类的东西中,基本上是任何先运行的类似组件的代码任何网络请求处理程序的代码,保证 ThreadLocal 变量已设置。

然后您只需在 Envers 修订实体侦听器中访问 ThreadLocal 并使用该值填充自定义字段。

请务必清除请求处理程序链末尾的 ThreadLocal 变量。