Frage

Was ist der beste Weg, um den aktuellen Benutzer über Java -Anwendung auf JBOSS zu erhalten? Das Systemumgebungsvariable System.getProperty ("user.name") funktioniert nicht, da JBoss als Dienst ausgeführt wird.

Die Anwendung wird auf einem Laptop ausgeführt, das Windows XP ausführt. Die Anwendung basiert auf webbasiertem und zugegriffen mit dem Internet Explorer von einem bestimmten angemeldeten Windows-Benutzer. Nur 1 Windows -Benutzer kann gleichzeitig angemeldet werden. Die Anwendung muss wissen, welcher Benutzer sich angemeldet hat, um ein rollenbasiertes Menü- und Sicherheitsfunktionen zu erstellen. So werden sowohl der Client (Internet Explorer) als auch der Server (JBoss) auf demselben Laptop ausgeführt. Derzeit bestimmen wir den protokollierten Benutzer mithilfe von TaskList /V und analysieren die Ausgabe, um nach bestimmten Prozessen und dem Benutzer auszuführen. Sie müssen jedoch wissen, ob es eine sauberere Möglichkeit gibt, die protokollierten Windows -Benutzer zu erhalten.

War es hilfreich?

Lösung

Ich denke nicht, dass die Frage wirklich viel Sinn macht. Es kann sein nein Benutzer haben sich am Host angemeldet - oder es gibt möglicherweise mehrere Benutzer.

Ich wäre etwas vorsichtig mit einem Design, das das sowieso wirklich wissen wollte - Webanwendungen sollten sich nicht wirklich für so etwas interessieren, IMO. Was versuchst du zu machen?

Andere Tipps

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

Bezug: http://download.oracle.com/javase/tutorial/essential/environment/sysprop.html

Dies setzt voraus, dass Sie eine Umgebungsvariable namens Benutzername gespeichert haben, wenn der Benutzer angemeldet ist:

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

Oder wenn Sie den vollständigen Satz von Umgebungsvariablen wünschen:

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

Dann durch die Karte iterieren, um eine Umgebungsvariable zu erhalten, in der Sie einen Benutzernamen aufbewahren.

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

Verwenden Sie die Jaas -Authentifizierung. Sie sollten in der Lage sein, NTLM unter Windows zu verwenden, damit der Benutzer keine zusätzliche Arbeit erledigen muss. Auf dem Server können Sie dann den Sicherheitskontext verwenden, um den Caller -Prinzip zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top