문제

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을 사용할 수 있어야하므로 사용자는 추가 작업을 수행 할 필요가 없습니다. 그런 다음 서버에서 보안 컨텍스트를 사용하여 발신자 교장을 얻을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top