Pergunta

Qual é a melhor maneira de obter o usuário logado no momento por meio do aplicativo Java em execução no JBoss.A variável de ambiente do sistema System.getProperty("user.name") não funciona porque o JBoss está sendo executado como um serviço.

O aplicativo está sendo executado em um laptop com Windows XP.O aplicativo é baseado na web e acessado usando o Internet Explorer por um usuário específico do Windows conectado.Apenas 1 usuário do Windows pode estar conectado por vez.O aplicativo precisa saber qual usuário efetuou login para criar um menu baseado em função e recursos de segurança.Portanto, tanto o cliente (Internet Explorer) quanto o servidor (JBoss) estão rodando no mesmo laptop.Atualmente, determinamos o usuário conectado usando tasklist /v e, em seguida, analisamos a saída para procurar determinados processos e o usuário que os executa.No entanto, é necessário saber se existe uma maneira mais limpa de obter o usuário logado do Windows.

Foi útil?

Solução

Não acho que a pergunta realmente faça muito sentido.Pode ser não usuários conectados ao host - ou pode haver vários usuários.

Eu ficaria um pouco cauteloso com um design que realmente quisesse saber disso - aplicativos da web não deveriam estar interessados ​​nesse tipo de coisa, IMO.O que você está tentando fazer?

Outras dicas

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

Referência: http://download.oracle.com/javase/tutorial/essential/environment/sysprop.html

Isso pressupõe que você armazenou uma variável de ambiente chamada USERNAME quando o usuário efetuou login:

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

Ou, se desejar o conjunto completo de variáveis ​​de ambiente:

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

Em seguida, percorra o mapa para obter uma variável de ambiente na qual você está armazenando um nome de usuário.

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();
}

Use a autenticação JaaS. Você poderá usar o NTLM no Windows, para que o usuário não precise fazer nenhum trabalho adicional. Em seguida, no servidor, você pode usar o contexto de segurança para obter o diretor do chamador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top