Java 시스템 환경 가변 현재 사용자
-
05-07-2019 - |
문제
JBOSS에서 실행되는 Java 응용 프로그램을 통해 현재 로그인 사용자를 얻는 가장 좋은 방법은 무엇입니까? 시스템 환경 변수 시스템 .getProperty ( "user.name")는 JBOSS가 서비스로 실행되고 있으므로 작동하지 않습니다.
응용 프로그램은 Windows XP를 실행하는 노트북에서 실행 중입니다. 응용 프로그램은 웹 기반이며 특정 로그인 Windows 사용자가 Internet Explorer를 사용하여 액세스합니다. 한 번에 1 개의 Windows 사용자 만 로그인 할 수 있습니다. 응용 프로그램은 역할 기반 메뉴 및 보안 기능을 수행하기 위해 로그인 한 사용자를 알아야합니다. 따라서 클라이언트 (Internet Explorer)와 서버 (JBOSS)는 모두 동일한 노트북에서 실행 중입니다. 현재 TaskList /V를 사용하여 로그인 한 사용자를 결정한 다음 출력을 구문 분석하여 특정 프로세스와 사용자가 실행하는 사용자를 찾습니다. 그러나 Windows 사용자에 로그인하는 더 깨끗한 방법이 있는지 알아야합니다.
해결책
나는 그 질문이 실제로 의미가 있다고 생각하지 않습니다. 있을 수 있습니다 아니요 사용자가 호스트에 로그인하거나 여러 사용자가있을 수 있습니다.
나는 어쨌든 이것을 알고 싶어하는 디자인에 대해 다소 조심 할 것입니다. 웹 응용 프로그램은 실제로 그런 종류의 IMO에 관심이 없어야합니다. 당신은 무엇을하려고합니까?
다른 팁
문자열 uname = system.getenv ( "user.name")
참조: http://download.oracle.com/javase/tutorial/estential/environment/sysprop.html
이는 사용자가 로그인했을 때 사용자 이름이라는 환경 변수를 저장했다고 가정합니다.
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();
}
JAAS 인증을 사용하십시오. Windows에서 NTLM을 사용할 수 있어야하므로 사용자는 추가 작업을 수행 할 필요가 없습니다. 그런 다음 서버에서 보안 컨텍스트를 사용하여 발신자 교장을 얻을 수 있습니다.