Domanda

Qual è il modo migliore per ottenere l'utente attualmente connesso tramite l'applicazione Java in esecuzione su JBoss. La variabile di ambiente di sistema System.getProperty (" nome.utente ") non funziona poiché JBoss è in esecuzione come servizio.

L'applicazione è in esecuzione su un laptop con Windows XP. L'applicazione è basata sul Web e vi si accede tramite Internet Explorer da un particolare utente Windows registrato. È possibile accedere solo 1 utente Windows alla volta. L'applicazione deve sapere quale utente ha effettuato l'accesso per eseguire un menu basato sul ruolo e le funzionalità di sicurezza. Quindi sia il client (Internet Explorer) che il server (JBoss) sono in esecuzione sullo stesso laptop. Attualmente, determiniamo l'utente che ha effettuato l'accesso utilizzando tasklist / v e quindi analizzando l'output per cercare determinati processi e l'utente che li esegue. Tuttavia, è necessario sapere se esiste un modo più pulito di ottenere l'utente di Windows connesso.

È stato utile?

Soluzione

Non penso che la domanda abbia davvero molto senso. Potrebbero essere presenti nessun utenti connessi all'host oppure potrebbero esserci più utenti.

Sarei un po 'diffidente nei confronti di un design che voleva davvero saperlo comunque - le applicazioni web non dovrebbero essere interessate a quel genere di cose, IMO. Cosa stai cercando di fare?

Altri suggerimenti

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

Riferimento: http://download.oracle.com/javase/ tutorial / essenziali / ambiente / sysprop.html

Ciò presuppone che tu abbia archiviato una variabile di ambiente denominata USERNAME quando l'utente ha effettuato l'accesso:

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

Oppure, se si desidera il set completo di variabili di ambiente:

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

Quindi, scorrere la mappa per ottenere una variabile di ambiente in cui si sta memorizzando un nome utente.

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

Utilizza l'autenticazione JAAS. Dovresti essere in grado di utilizzare NTLM su Windows, quindi l'utente non dovrà fare alcun lavoro aggiuntivo. Quindi, sul server è possibile utilizzare il contesto di sicurezza per ottenere l'entità chiamante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top