1

JBossで実行されているJavaアプリケーションを介して現在ログインしているユーザーを取得する最良の方法は何ですか. JBoss がサービスとして実行されているため、システム環境変数 System.getProperty("user.name") が機能しません。

アプリケーションは、Windows XP を実行しているラップトップで実行されています。このアプリケーションは Web ベースであり、ログインしている特定の Windows ユーザーが Internet Explorer を使用してアクセスします。一度にログインできる Windows ユーザーは 1 人だけです。アプリケーションは、ロール ベースのメニューとセキュリティ機能を実行するために、どのユーザーがログインしているかを知る必要があります。したがって、クライアント (Internet Explorer) とサーバー (JBoss) の両方が同じラップトップで実行されています。現在、tasklist /v を使用してログインしているユーザーを特定し、出力を解析して特定のプロセスとそれらを実行しているユーザーを探します。ただし、ログインしている Windows ユーザーを取得するよりクリーンな方法があるかどうかを知る必要があります。

4

4 に答える 4

3

文字列 uname = System.getenv("user.name")

参照: http://download.oracle.com/javase/tutorial/essential/environment/sysprop.html

于 2010-10-22T22:25:10.983 に答える
3

その質問はあまり意味がないと思います。ホストにログオンしているユーザーがいないか、複数のユーザーがいる可能性があります

とにかくこれを本当に知りたがっている設計には、いくらか警戒します.Webアプリケーションは、そのようなことに本当に関心があるべきではありません.IMO. あなたは何をしようとしているのですか?

于 2009-06-16T14:40:55.683 に答える
0

これは、ユーザーがログインしたときに USERNAME という名前の環境変数が保存されていることを前提としています。

String username = System.getenv("USERNAME");

または、環境変数の完全なセットが必要な場合:

Map<String, String> envMap = System.getenv();

次に、マップを反復処理して、ユーザー名を保存している環境変数を取得します。

Map<String, String> envMap = System.getenv();
int mapsize = envMap.size();
Iterator i = envMap.entrySet().iterator();
for (int j = 0; j < mapsize; j++) {
    Map.Entry entry = (Map.Entry) i.next();
    Object key = entry.getKey();
    Object value = entry.getValue();
}
于 2009-06-16T16:12:54.150 に答える
0

JAAS 認証を使用します。Windows で NTLM を使用できる必要があるため、ユーザーは追加の作業を行う必要はありません。次に、サーバーでセキュリティ コンテキストを使用して、呼び出し元のプリンシパルを取得できます。

于 2009-06-17T13:52:26.620 に答える