Java系统环境变量当前用户

时间:2009-06-16 14:37:50

标签: java environment-variables

通过在JBoss上运行的Java应用程序获取当前登录用户的最佳方法是什么。 JBoss作为服务运行时,系统环境变量System.getProperty(“user.name”)不起作用。

该应用程序在运行Windows XP的笔记本电脑上运行。该应用程序是基于Web的,并由特定登录的Windows用户使用Internet Explorer访问。一次只能登录1个Windows用户。应用程序需要知道哪个用户已登录以执行基于角色的菜单和安全功能。因此,客户端(Internet Explorer)和服务器(JBoss)都在同一台笔记本电脑上运行。目前,我们使用tasklist / v确定登录用户,然后解析输出以查找某些进程以及运行它们的用户。但是,需要知道是否有更简洁的方法来获取登录的Windows用户。

4 个答案:

答案 0 :(得分:3)

我认为这个问题没有多大意义。可能有没有用户登录到主机 - 或者可能有多个用户。

我有点担心一个真正想要了解这一点的设计 - 网络应用程序真的不应该对这类东西感兴趣,IMO。你想做什么?

答案 1 :(得分:3)

String uname = System.getenv(“user.name”)

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

答案 2 :(得分:0)

这假设您在用户登录时存储了名为USERNAME的环境变量:

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

答案 3 :(得分:0)

使用JAAS身份验证。您应该能够在Windows上使用NTLM,因此用户无需进行任何额外的工作。然后,在服务器上,您可以使用安全上下文来获取调用者主体。