使用Java检测用户是否登录计算机

6

我希望开发一个Java应用程序,可以检测Windows域上的用户登录。这些凭据将用于登录Java应用程序。

我该如何做呢?

谢谢!

3个回答

12

如果你需要域名,可以使用以下方法:

  com.sun.security.auth.module.NTSystem NTSystem = new
          com.sun.security.auth.module.NTSystem();
  System.out.println(NTSystem.getName());
  System.out.println(NTSystem.getDomain());

再见。


我可以在Java Web应用程序中使用这个吗? - VansFannel
不是。这是一个Java应用程序(Windows操作系统)。 - RealHowTo
这个例子比System.getProperty("user.name")更好,因为很容易欺骗JVM认为有不同的用户登录。 - Azder

12
System.getProperty("user.name") 

我可以在Java Web应用程序中使用这个吗? - VansFannel
6
这很容易被仿冒。-Duser.name=管理员 - Peter Lawrey
您可以像更改其他属性一样,在命令行上更改user.name属性。您可以在Java Web应用程序中使用它,但它会给您Web进程的用户,而不是发送请求的用户。 - Peter Lawrey
似乎这不包括域(如果用户在Windows域上)。 - Peter Tseng

0
注意:只有用户启动应用程序时,System.getProperty("user.name") 才能正常工作。如果程序是由 System 或类似 LANDesk 的应用程序运行的,则用户将显示为 "SYSTEM"(在域 "NT AUTHORITY" 下)。
在这种情况下,使用 NTSystem 的第二个解决方案将返回正确的结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接