私の監査テーブルに現在のユーザのIPアドレスを記録しようとしていますが、現在のところ、サーバIPを間違って記録しているInetAddress.getLocalHost().toString()
のようになっています。Hibernate Envers:ログユーザIPアドレス
通常、私はHttpRequestオブジェクトをオートワイヤリングすることでこれを行うことができますが、これは私のリスナーでオーバーライドしているnewRevision()
メソッドの中では不可能です。
私の監査テーブルに現在のユーザのIPアドレスを記録しようとしていますが、現在のところ、サーバIPを間違って記録しているInetAddress.getLocalHost().toString()
のようになっています。Hibernate Envers:ログユーザIPアドレス
通常、私はHttpRequestオブジェクトをオートワイヤリングすることでこれを行うことができますが、これは私のリスナーでオーバーライドしているnewRevision()
メソッドの中では不可能です。
ポストthisをご覧ください。 Webアプリケーションで
、ThreadLocal
変数を設定するための最高の場所は、典型的には、そのThreadLocal
保証、Filter
またはInterceptor
ような何か、前にウェブ要求ハンドラのコードのいずれかに走る基本的にいずれかのコンポーネントのようなコードの中だろう変数が設定されています。
Enversリビジョンエンティティリスナー内のThreadLocal
にアクセスして、カスタムフィールドに値を入力します。
ThreadLocal
変数を、リクエストハンドラチェーンの最後に必ずクリアしてください。
お客様のリクエストにアクセスする唯一の方法はクライアントのIPアドレスを知るために、リクエストにアクセスできない場合はスレッドを使用してリクエストを処理し、ロジックを実行します。スレッドホルダー – karelss