【问题标题】:Is it possible to get client os user name in java web application?是否可以在 Java Web 应用程序中获取客户端操作系统用户名?
【发布时间】:2013-10-16 10:36:19
【问题描述】:

我的网站托管在本地服务器上,并且该网站由多个本地用户访问,当我尝试 java 代码时,我希望在他们访问特定页面时获取访问此页面的客户端/用户的 os 用户:

String currentUser=System.getProperty("user.name"); 

它获取服务器而不是客户端的操作系统用户名。

请告知如何实现,谢谢。

【问题讨论】:

  • 你能举一些例子你得到什么和你想要什么?
  • @sᴜʀᴇsʜ ᴀᴛᴛᴀ,我得到的是服务器而不是客户端的操作系统用户名。

标签: java javascript jsf jakarta-ee applet


【解决方案1】:
String userAgent = request.getHeader("User-Agent");

您可以从此网站获取所有用户代理值的完整列表, http://www.user-agents.org/

Javascript 方式

var OSName="Unknown OS";
if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";

并将 OSName 变量发送回服务器。

【讨论】:

  • 这包括大括号中的操作系统。例如Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36
  • @Deepak Mishra,我知道用户代理,它不能帮助获取 os 用户名。
  • 我说的是操作系统用户名没有操作系统名!
  • 它在环境变量“USERNAME”中。您无法从 javascript 访问它。
  • 您为什么不询问用户并相应地导航到所需的页面。如果您已经知道用户集,则可以使用下拉菜单。
【解决方案2】:

创建由applet组成的jar,其中applet可以使用System.getProperty("user.name")获取当前用户名 在同一个小程序中编写 httpclient,它将当前用户名发送到服务器上的 servlet。

  1. 调用当前用户方法是applet

  2. 将用户名分配给 httpclient

  3. 使用 httpclient 将用户名发送到 servlet

您的程序提供服务器的用户名而不是客户端,这就是为什么您必须使用客户端技术,例如驻留在客户端计算机中的小程序。

【讨论】:

  • 我对小程序没有经验,能否请您添加此小程序的示例代码?
  • 您的问题是通过寻找其他 cmets 解决的,还是您发现除了 applet 之外的任何其他技术。
【解决方案3】:

使用 java 方法 request.getRemoteUser() 成功了。

【讨论】:

  • 我从 request.getRemoteUser() 得到空值,有人能帮帮我吗?我试过: String userProperty = System.getProperty("user.name"); String userNTSystem = new com.sun.security.auth.module.NTSystem().getName();主体主体 = request.getUserPrincipal();字符串 userGetenv = System.getenv("USERNAME"); String remoteUser = request.getRemoteUser();
猜你喜欢
  • 1970-01-01
  • 2016-08-05
  • 2019-11-15
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多