hiberbate3.5とspring3.xを使用しています
私はエンバーが働いており、..._audとrevinfoレコードが書き込まれています。
監査レコードにユーザー名を追加する必要があります。revinfoはseamアプリの例を見た中で最高の場所だと思いますが、jbossのspringアプリには何もありません。
誰かがこれを手伝ってもらえますか?
私の主な目的は、Windows認証ユーザーを記録できるようにすることです。
hiberbate3.5とspring3.xを使用しています
私はエンバーが働いており、..._audとrevinfoレコードが書き込まれています。
監査レコードにユーザー名を追加する必要があります。revinfoはseamアプリの例を見た中で最高の場所だと思いますが、jbossのspringアプリには何もありません。
誰かがこれを手伝ってもらえますか?
私の主な目的は、Windows認証ユーザーを記録できるようにすることです。
Seamを使用している場合、 Enversのドキュメントにこれに対する答えがあります。
public class ExampleListener implements RevisionListener {
public void newRevision(Object revisionEntity) {
ExampleRevEntity exampleRevEntity = (ExampleRevEntity) revisionEntity;
Identity identity = (Identity) Component.getInstance("org.jboss.seam.security.identity");
exampleRevEntity.setUsername(identity.getUsername());
}
}
それで、あなたの質問は、Seamを使用しない場合、その時点で現在ログインしているユーザーを取得する方法だと思いますか?それを行うにはいくつかの方法があると確信しています。私たちはこのように行います。
フィルタからのコード例
protected void beforeRequest(final HttpServletRequest request, final String message) {
final Principal principal = request.getUserPrincipal();
final String username = principal != null ? principal.getName() : null;
if (username != null) {
MDC.put(USER, username);
}
}
protected void afterRequest(final HttpServletRequest request, final String message) {
MDC.remove(USER);
}
get(String)
MDCには静的メソッドがあるため、後でコード内のどこからでもユーザーを取得できます。