Переменная Системная среда Java Текущий пользователь - PullRequest
0 голосов
/ 16 июня 2009

Какой лучший способ получить текущего зарегистрированного пользователя через приложение Java, работающее на JBoss. Системная переменная среды System.getProperty ("user.name") не работает, так как JBoss работает как служба.

Приложение работает на ноутбуке под управлением Windows XP. Приложение имеет веб-интерфейс и доступ к нему осуществляется с помощью Internet Explorer определенным вошедшим в систему пользователем Windows. Только 1 пользователь Windows может быть авторизован одновременно. Приложению необходимо знать, какой пользователь выполнил вход в систему, чтобы сделать меню на основе ролей и функции безопасности. Таким образом, и клиент (Internet Explorer), и сервер (JBoss) работают на одном ноутбуке. В настоящее время мы определяем вошедшего в систему пользователя с помощью tasklist / v, а затем анализируем выходные данные для поиска определенных процессов и пользователя, выполняющего их. Тем не менее, необходимо знать, есть ли более чистый способ получения авторизованного пользователя Windows.

Ответы [ 4 ]

3 голосов
/ 23 октября 2010

String uname = System.getenv ("user.name")

Ссылка: http://download.oracle.com/javase/tutorial/essential/environment/sysprop.html

3 голосов
/ 16 июня 2009

Я не думаю, что вопрос действительно имеет большой смысл. На хосте может быть зарегистрировано нет пользователей или может быть несколько пользователей.

Я бы с некоторой осторожностью относился к дизайну, который действительно хотел бы знать это - веб-приложения не должны интересоваться такими вещами, IMO. Что ты пытаешься сделать?

0 голосов
/ 17 июня 2009

Использовать аутентификацию JAAS. Вы должны быть в состоянии использовать NTLM в Windows, чтобы пользователю не пришлось выполнять дополнительную работу. Затем на сервере вы можете использовать контекст безопасности для получения принципала вызывающего абонента.

0 голосов
/ 16 июня 2009

Это предполагает, что вы сохранили переменную среды с именем 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...